home *** CD-ROM | disk | FTP | other *** search
/ Programming a Multiplayer FPS in DirectX / Programming a Multiplayer FPS in DirectX (Companion CD).iso / DirectX / dxsdk_oct2004.exe / dxsdk.exe / Utilities / MView / gxu / shownormal.cod < prev    next >
Encoding:
Text File  |  2004-09-30  |  106.6 KB  |  3,611 lines

  1. ; Listing generated by Microsoft (R) Optimizing Compiler Version 13.10.4035 
  2.  
  3.     TITLE    .\shownormal.cpp
  4.     .386P
  5. include listing.inc
  6. if @Version gt 510
  7. .model FLAT
  8. else
  9. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  10. _TEXT    ENDS
  11. _DATA    SEGMENT DWORD USE32 PUBLIC 'DATA'
  12. _DATA    ENDS
  13. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  14. CONST    ENDS
  15. _BSS    SEGMENT DWORD USE32 PUBLIC 'BSS'
  16. _BSS    ENDS
  17. $$SYMBOLS    SEGMENT BYTE USE32 'DEBSYM'
  18. $$SYMBOLS    ENDS
  19. _TLS    SEGMENT DWORD USE32 PUBLIC 'TLS'
  20. _TLS    ENDS
  21. ;    COMDAT ??_C@_04IHCGOIEL@mWd1?$AA@
  22. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  23. CONST    ENDS
  24. ;    COMDAT ??_C@_04KMALLLII@mWd2?$AA@
  25. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  26. CONST    ENDS
  27. ;    COMDAT ??_C@_04LFBAIKMJ@mWd3?$AA@
  28. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  29. CONST    ENDS
  30. ;    COMDAT ??_C@_04PKFBBMAO@mWd4?$AA@
  31. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  32. CONST    ENDS
  33. ;    COMDAT ??_C@_04ODEKCNEP@mWd5?$AA@
  34. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  35. CONST    ENDS
  36. ;    COMDAT ??_C@_04MIGHHOIM@mWd6?$AA@
  37. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  38. CONST    ENDS
  39. ;    COMDAT ??_C@_04NBHMEPMN@mWd7?$AA@
  40. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  41. CONST    ENDS
  42. ;    COMDAT ??_C@_04FGOEFDAC@mWd8?$AA@
  43. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  44. CONST    ENDS
  45. ;    COMDAT ??_C@_04EPPPGCED@mWd9?$AA@
  46. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  47. CONST    ENDS
  48. ;    COMDAT ??_C@_05DOMPIIAD@mWd10?$AA@
  49. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  50. CONST    ENDS
  51. ;    COMDAT ??_C@_05CHNELJEC@mWd11?$AA@
  52. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  53. CONST    ENDS
  54. ;    COMDAT ??_C@_05MPJOKIB@mWd12?$AA@
  55. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  56. CONST    ENDS
  57. ;    COMDAT ??_C@_05BFOCNLMA@mWd13?$AA@
  58. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  59. CONST    ENDS
  60. ;    COMDAT ??_C@_05FKKDENAH@mWd14?$AA@
  61. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  62. CONST    ENDS
  63. ;    COMDAT ??_C@_05EDLIHMEG@mWd15?$AA@
  64. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  65. CONST    ENDS
  66. ;    COMDAT ??_C@_05GIJFCPIF@mWd16?$AA@
  67. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  68. CONST    ENDS
  69. ;    COMDAT ??_C@_05HBIOBOME@mWd17?$AA@
  70. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  71. CONST    ENDS
  72. ;    COMDAT ??_C@_05PGBGACAL@mWd18?$AA@
  73. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  74. CONST    ENDS
  75. ;    COMDAT ??_C@_05OPANDDEK@mWd19?$AA@
  76. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  77. CONST    ENDS
  78. ;    COMDAT ??_C@_05DMIJDGFK@mWd20?$AA@
  79. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  80. CONST    ENDS
  81. ;    COMDAT ??_C@_05CFJCAHBL@mWd21?$AA@
  82. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  83. CONST    ENDS
  84. ;    COMDAT ??_C@_05OLPFENI@mWd22?$AA@
  85. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  86. CONST    ENDS
  87. ;    COMDAT ??_C@_05BHKEGFJJ@mWd23?$AA@
  88. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  89. CONST    ENDS
  90. ;    COMDAT ??_C@_05FIOFPDFO@mWd24?$AA@
  91. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  92. CONST    ENDS
  93. ;    COMDAT ??_C@_05EBPOMCBP@mWd25?$AA@
  94. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  95. CONST    ENDS
  96. ;    COMDAT ??_C@_05GKNDJBNM@mWd26?$AA@
  97. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  98. CONST    ENDS
  99. ;    COMDAT ??_C@_05HDMIKAJN@mWd27?$AA@
  100. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  101. CONST    ENDS
  102. ;    COMDAT ??_C@_05PEFALMFC@mWd28?$AA@
  103. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  104. CONST    ENDS
  105. ;    COMDAT ??_C@_04BEMIBDAE@mTot?$AA@
  106. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  107. CONST    ENDS
  108. ;    COMDAT ??_C@_07HHMNENJH@mWorlds?$AA@
  109. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  110. CONST    ENDS
  111. ;    COMDAT ??_C@_04BFCOOMBD@vScl?$AA@
  112. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  113. CONST    ENDS
  114. ;    COMDAT ??_C@_04JKCKMDGO@vClr?$AA@
  115. CONST    SEGMENT DWORD USE32 PUBLIC 'CONST'
  116. CONST    ENDS
  117. ;    COMDAT ??0CShowNormals@@QAE@XZ
  118. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  119. _TEXT    ENDS
  120. ;    COMDAT ??1CShowNormals@@QAE@XZ
  121. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  122. _TEXT    ENDS
  123. ;    COMDAT ?Init@CShowNormals@@QAEJPAUID3DXBaseMesh@@KM@Z
  124. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  125. _TEXT    ENDS
  126. ;    COMDAT ?Draw@CShowNormals@@QAEJKKPAUID3DXEffect@@0KPAUD3DXMATRIX@@K@Z
  127. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  128. _TEXT    ENDS
  129. ;    COMDAT ?CreateEmptyOutline@CShowNormals@@AAEJXZ
  130. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  131. _TEXT    ENDS
  132. ;    COMDAT ??0D3DXCOLOR@@QAE@K@Z
  133. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  134. _TEXT    ENDS
  135. ;    COMDAT ??0D3DXVECTOR4@@QAE@MMMM@Z
  136. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  137. _TEXT    ENDS
  138. ;    COMDAT ??0D3DXMATRIX@@QAE@XZ
  139. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  140. _TEXT    ENDS
  141. ;    COMDAT ??YD3DXVECTOR3@@QAEAAU0@ABU0@@Z
  142. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  143. _TEXT    ENDS
  144. ;    COMDAT ??XD3DXVECTOR3@@QAEAAU0@M@Z
  145. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  146. _TEXT    ENDS
  147. ;    COMDAT ?SetNormal@DXCrackFVF@@QAEXPAXPAUD3DXVECTOR3@@@Z
  148. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  149. _TEXT    ENDS
  150. ;    COMDAT ?SetPosition@DXCrackFVF@@QAEXPAXPAUD3DXVECTOR3@@@Z
  151. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  152. _TEXT    ENDS
  153. ;    COMDAT ?PdwGetIndices@CD3DXCrackDecl1@@QAEPAKPAE@Z
  154. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  155. _TEXT    ENDS
  156. ;    COMDAT ?SetIndices@DXCrackFVF@@QAEXPAXK@Z
  157. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  158. _TEXT    ENDS
  159. ;    COMDAT ?BIndexedWeights@DXCrackFVF@@QAEHXZ
  160. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  161. _TEXT    ENDS
  162. ;    COMDAT ?CWeights@DXCrackFVF@@QAEKXZ
  163. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  164. _TEXT    ENDS
  165. ;    COMDAT ?SetWeight@DXCrackFVF@@QAEXPAXIM@Z
  166. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  167. _TEXT    ENDS
  168. ;    COMDAT ?FGetWeight@CD3DXCrackDecl1@@QAEMPAEI@Z
  169. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  170. _TEXT    ENDS
  171. ;    COMDAT ?PvGetNormal@CD3DXCrackDecl1@@QAEPAUD3DXVECTOR3@@PAE@Z
  172. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  173. _TEXT    ENDS
  174. ;    COMDAT ?PvGetPosition@CD3DXCrackDecl1@@QAEPAUD3DXVECTOR3@@PAE@Z
  175. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  176. _TEXT    ENDS
  177. ;    COMDAT ?BIndexedWeights@CD3DXCrackDecl1@@QAEHXZ
  178. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  179. _TEXT    ENDS
  180. ;    COMDAT ?CWeights@CD3DXCrackDecl1@@QAEHXZ
  181. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  182. _TEXT    ENDS
  183. ;    COMDAT ?BNormal@CD3DXCrackDecl1@@QAEHXZ
  184. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  185. _TEXT    ENDS
  186. ;    COMDAT ?BTexCoord@CD3DXCrackDecl1@@QAEHI@Z
  187. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  188. _TEXT    ENDS
  189. ;    COMDAT ?SetDeclaration@CD3DXCrackDecl1@@QAEJPBU_D3DVERTEXELEMENT9@@@Z
  190. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  191. _TEXT    ENDS
  192. ;    COMDAT ??0D3DXVECTOR3@@QAE@MMM@Z
  193. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  194. _TEXT    ENDS
  195. ;    COMDAT ??0D3DXVECTOR3@@QAE@XZ
  196. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  197. _TEXT    ENDS
  198. ;    COMDAT ??0CD3DXCrackDecl1@@QAE@XZ
  199. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  200. _TEXT    ENDS
  201. ;    COMDAT ??0DXCrackFVF@@QAE@K@Z
  202. _TEXT    SEGMENT PARA USE32 PUBLIC 'CODE'
  203. _TEXT    ENDS
  204. FLAT    GROUP _DATA, CONST, _BSS
  205.     ASSUME    CS: FLAT, DS: FLAT, SS: FLAT
  206. endif
  207.  
  208. INCLUDELIB LIBC
  209. INCLUDELIB OLDNAMES
  210.  
  211. PUBLIC    ?x_rgszMatrix@@3PAPBDA                ; x_rgszMatrix
  212. PUBLIC    ??_C@_04IHCGOIEL@mWd1?$AA@            ; `string'
  213. PUBLIC    ??_C@_04KMALLLII@mWd2?$AA@            ; `string'
  214. PUBLIC    ??_C@_04LFBAIKMJ@mWd3?$AA@            ; `string'
  215. PUBLIC    ??_C@_04PKFBBMAO@mWd4?$AA@            ; `string'
  216. PUBLIC    ??_C@_04ODEKCNEP@mWd5?$AA@            ; `string'
  217. PUBLIC    ??_C@_04MIGHHOIM@mWd6?$AA@            ; `string'
  218. PUBLIC    ??_C@_04NBHMEPMN@mWd7?$AA@            ; `string'
  219. PUBLIC    ??_C@_04FGOEFDAC@mWd8?$AA@            ; `string'
  220. PUBLIC    ??_C@_04EPPPGCED@mWd9?$AA@            ; `string'
  221. PUBLIC    ??_C@_05DOMPIIAD@mWd10?$AA@            ; `string'
  222. PUBLIC    ??_C@_05CHNELJEC@mWd11?$AA@            ; `string'
  223. PUBLIC    ??_C@_05MPJOKIB@mWd12?$AA@            ; `string'
  224. PUBLIC    ??_C@_05BFOCNLMA@mWd13?$AA@            ; `string'
  225. PUBLIC    ??_C@_05FKKDENAH@mWd14?$AA@            ; `string'
  226. PUBLIC    ??_C@_05EDLIHMEG@mWd15?$AA@            ; `string'
  227. PUBLIC    ??_C@_05GIJFCPIF@mWd16?$AA@            ; `string'
  228. PUBLIC    ??_C@_05HBIOBOME@mWd17?$AA@            ; `string'
  229. PUBLIC    ??_C@_05PGBGACAL@mWd18?$AA@            ; `string'
  230. PUBLIC    ??_C@_05OPANDDEK@mWd19?$AA@            ; `string'
  231. PUBLIC    ??_C@_05DMIJDGFK@mWd20?$AA@            ; `string'
  232. PUBLIC    ??_C@_05CFJCAHBL@mWd21?$AA@            ; `string'
  233. PUBLIC    ??_C@_05OLPFENI@mWd22?$AA@            ; `string'
  234. PUBLIC    ??_C@_05BHKEGFJJ@mWd23?$AA@            ; `string'
  235. PUBLIC    ??_C@_05FIOFPDFO@mWd24?$AA@            ; `string'
  236. PUBLIC    ??_C@_05EBPOMCBP@mWd25?$AA@            ; `string'
  237. PUBLIC    ??_C@_05GKNDJBNM@mWd26?$AA@            ; `string'
  238. PUBLIC    ??_C@_05HDMIKAJN@mWd27?$AA@            ; `string'
  239. PUBLIC    ??_C@_05PEFALMFC@mWd28?$AA@            ; `string'
  240. ;    COMDAT ??_C@_04IHCGOIEL@mWd1?$AA@
  241. CONST    SEGMENT
  242. ??_C@_04IHCGOIEL@mWd1?$AA@ DB 'mWd1', 00H        ; `string'
  243. CONST    ENDS
  244. ;    COMDAT ??_C@_04KMALLLII@mWd2?$AA@
  245. CONST    SEGMENT
  246. ??_C@_04KMALLLII@mWd2?$AA@ DB 'mWd2', 00H        ; `string'
  247. CONST    ENDS
  248. ;    COMDAT ??_C@_04LFBAIKMJ@mWd3?$AA@
  249. CONST    SEGMENT
  250. ??_C@_04LFBAIKMJ@mWd3?$AA@ DB 'mWd3', 00H        ; `string'
  251. CONST    ENDS
  252. ;    COMDAT ??_C@_04PKFBBMAO@mWd4?$AA@
  253. CONST    SEGMENT
  254. ??_C@_04PKFBBMAO@mWd4?$AA@ DB 'mWd4', 00H        ; `string'
  255. CONST    ENDS
  256. ;    COMDAT ??_C@_04ODEKCNEP@mWd5?$AA@
  257. CONST    SEGMENT
  258. ??_C@_04ODEKCNEP@mWd5?$AA@ DB 'mWd5', 00H        ; `string'
  259. CONST    ENDS
  260. ;    COMDAT ??_C@_04MIGHHOIM@mWd6?$AA@
  261. CONST    SEGMENT
  262. ??_C@_04MIGHHOIM@mWd6?$AA@ DB 'mWd6', 00H        ; `string'
  263. CONST    ENDS
  264. ;    COMDAT ??_C@_04NBHMEPMN@mWd7?$AA@
  265. CONST    SEGMENT
  266. ??_C@_04NBHMEPMN@mWd7?$AA@ DB 'mWd7', 00H        ; `string'
  267. CONST    ENDS
  268. ;    COMDAT ??_C@_04FGOEFDAC@mWd8?$AA@
  269. CONST    SEGMENT
  270. ??_C@_04FGOEFDAC@mWd8?$AA@ DB 'mWd8', 00H        ; `string'
  271. CONST    ENDS
  272. ;    COMDAT ??_C@_04EPPPGCED@mWd9?$AA@
  273. CONST    SEGMENT
  274. ??_C@_04EPPPGCED@mWd9?$AA@ DB 'mWd9', 00H        ; `string'
  275. CONST    ENDS
  276. ;    COMDAT ??_C@_05DOMPIIAD@mWd10?$AA@
  277. CONST    SEGMENT
  278. ??_C@_05DOMPIIAD@mWd10?$AA@ DB 'mWd10', 00H        ; `string'
  279. CONST    ENDS
  280. ;    COMDAT ??_C@_05CHNELJEC@mWd11?$AA@
  281. CONST    SEGMENT
  282. ??_C@_05CHNELJEC@mWd11?$AA@ DB 'mWd11', 00H        ; `string'
  283. CONST    ENDS
  284. ;    COMDAT ??_C@_05MPJOKIB@mWd12?$AA@
  285. CONST    SEGMENT
  286. ??_C@_05MPJOKIB@mWd12?$AA@ DB 'mWd12', 00H        ; `string'
  287. CONST    ENDS
  288. ;    COMDAT ??_C@_05BFOCNLMA@mWd13?$AA@
  289. CONST    SEGMENT
  290. ??_C@_05BFOCNLMA@mWd13?$AA@ DB 'mWd13', 00H        ; `string'
  291. CONST    ENDS
  292. ;    COMDAT ??_C@_05FKKDENAH@mWd14?$AA@
  293. CONST    SEGMENT
  294. ??_C@_05FKKDENAH@mWd14?$AA@ DB 'mWd14', 00H        ; `string'
  295. CONST    ENDS
  296. ;    COMDAT ??_C@_05EDLIHMEG@mWd15?$AA@
  297. CONST    SEGMENT
  298. ??_C@_05EDLIHMEG@mWd15?$AA@ DB 'mWd15', 00H        ; `string'
  299. CONST    ENDS
  300. ;    COMDAT ??_C@_05GIJFCPIF@mWd16?$AA@
  301. CONST    SEGMENT
  302. ??_C@_05GIJFCPIF@mWd16?$AA@ DB 'mWd16', 00H        ; `string'
  303. CONST    ENDS
  304. ;    COMDAT ??_C@_05HBIOBOME@mWd17?$AA@
  305. CONST    SEGMENT
  306. ??_C@_05HBIOBOME@mWd17?$AA@ DB 'mWd17', 00H        ; `string'
  307. CONST    ENDS
  308. ;    COMDAT ??_C@_05PGBGACAL@mWd18?$AA@
  309. CONST    SEGMENT
  310. ??_C@_05PGBGACAL@mWd18?$AA@ DB 'mWd18', 00H        ; `string'
  311. CONST    ENDS
  312. ;    COMDAT ??_C@_05OPANDDEK@mWd19?$AA@
  313. CONST    SEGMENT
  314. ??_C@_05OPANDDEK@mWd19?$AA@ DB 'mWd19', 00H        ; `string'
  315. CONST    ENDS
  316. ;    COMDAT ??_C@_05DMIJDGFK@mWd20?$AA@
  317. CONST    SEGMENT
  318. ??_C@_05DMIJDGFK@mWd20?$AA@ DB 'mWd20', 00H        ; `string'
  319. CONST    ENDS
  320. ;    COMDAT ??_C@_05CFJCAHBL@mWd21?$AA@
  321. CONST    SEGMENT
  322. ??_C@_05CFJCAHBL@mWd21?$AA@ DB 'mWd21', 00H        ; `string'
  323. CONST    ENDS
  324. ;    COMDAT ??_C@_05OLPFENI@mWd22?$AA@
  325. CONST    SEGMENT
  326. ??_C@_05OLPFENI@mWd22?$AA@ DB 'mWd22', 00H        ; `string'
  327. CONST    ENDS
  328. ;    COMDAT ??_C@_05BHKEGFJJ@mWd23?$AA@
  329. CONST    SEGMENT
  330. ??_C@_05BHKEGFJJ@mWd23?$AA@ DB 'mWd23', 00H        ; `string'
  331. CONST    ENDS
  332. ;    COMDAT ??_C@_05FIOFPDFO@mWd24?$AA@
  333. CONST    SEGMENT
  334. ??_C@_05FIOFPDFO@mWd24?$AA@ DB 'mWd24', 00H        ; `string'
  335. CONST    ENDS
  336. ;    COMDAT ??_C@_05EBPOMCBP@mWd25?$AA@
  337. CONST    SEGMENT
  338. ??_C@_05EBPOMCBP@mWd25?$AA@ DB 'mWd25', 00H        ; `string'
  339. CONST    ENDS
  340. ;    COMDAT ??_C@_05GKNDJBNM@mWd26?$AA@
  341. CONST    SEGMENT
  342. ??_C@_05GKNDJBNM@mWd26?$AA@ DB 'mWd26', 00H        ; `string'
  343. CONST    ENDS
  344. ;    COMDAT ??_C@_05HDMIKAJN@mWd27?$AA@
  345. CONST    SEGMENT
  346. ??_C@_05HDMIKAJN@mWd27?$AA@ DB 'mWd27', 00H        ; `string'
  347. CONST    ENDS
  348. ;    COMDAT ??_C@_05PEFALMFC@mWd28?$AA@
  349. CONST    SEGMENT
  350. ??_C@_05PEFALMFC@mWd28?$AA@ DB 'mWd28', 00H        ; `string'
  351. CONST    ENDS
  352. _DATA    SEGMENT
  353. ?x_rgszMatrix@@3PAPBDA DD FLAT:??_C@_04IHCGOIEL@mWd1?$AA@ ; x_rgszMatrix
  354.     DD    FLAT:??_C@_04KMALLLII@mWd2?$AA@
  355.     DD    FLAT:??_C@_04LFBAIKMJ@mWd3?$AA@
  356.     DD    FLAT:??_C@_04PKFBBMAO@mWd4?$AA@
  357.     DD    FLAT:??_C@_04ODEKCNEP@mWd5?$AA@
  358.     DD    FLAT:??_C@_04MIGHHOIM@mWd6?$AA@
  359.     DD    FLAT:??_C@_04NBHMEPMN@mWd7?$AA@
  360.     DD    FLAT:??_C@_04FGOEFDAC@mWd8?$AA@
  361.     DD    FLAT:??_C@_04EPPPGCED@mWd9?$AA@
  362.     DD    FLAT:??_C@_05DOMPIIAD@mWd10?$AA@
  363.     DD    FLAT:??_C@_05CHNELJEC@mWd11?$AA@
  364.     DD    FLAT:??_C@_05MPJOKIB@mWd12?$AA@
  365.     DD    FLAT:??_C@_05BFOCNLMA@mWd13?$AA@
  366.     DD    FLAT:??_C@_05FKKDENAH@mWd14?$AA@
  367.     DD    FLAT:??_C@_05EDLIHMEG@mWd15?$AA@
  368.     DD    FLAT:??_C@_05GIJFCPIF@mWd16?$AA@
  369.     DD    FLAT:??_C@_05HBIOBOME@mWd17?$AA@
  370.     DD    FLAT:??_C@_05PGBGACAL@mWd18?$AA@
  371.     DD    FLAT:??_C@_05OPANDDEK@mWd19?$AA@
  372.     DD    FLAT:??_C@_05DMIJDGFK@mWd20?$AA@
  373.     DD    FLAT:??_C@_05CFJCAHBL@mWd21?$AA@
  374.     DD    FLAT:??_C@_05OLPFENI@mWd22?$AA@
  375.     DD    FLAT:??_C@_05BHKEGFJJ@mWd23?$AA@
  376.     DD    FLAT:??_C@_05FIOFPDFO@mWd24?$AA@
  377.     DD    FLAT:??_C@_05EBPOMCBP@mWd25?$AA@
  378.     DD    FLAT:??_C@_05GKNDJBNM@mWd26?$AA@
  379.     DD    FLAT:??_C@_05HDMIKAJN@mWd27?$AA@
  380.     DD    FLAT:??_C@_05PEFALMFC@mWd28?$AA@
  381. _DATA    ENDS
  382. CONST    SEGMENT
  383. _x_rgdwTexCoordSize DD 08H
  384.     DD    0cH
  385.     DD    010H
  386.     DD    04H
  387. _x_rgcbTypeSizes DB 04H
  388.     DB    08H
  389.     DB    0cH
  390.     DB    010H
  391.     DB    04H
  392.     DB    04H
  393.     DB    04H
  394.     DB    08H
  395.     DB    04H
  396.     DB    04H
  397.     DB    08H
  398.     DB    04H
  399.     DB    08H
  400.     DB    04H
  401.     DB    04H
  402.     DB    04H
  403.     DB    08H
  404.     DB    00H
  405. CONST    ENDS
  406. PUBLIC    ??0CShowNormals@@QAE@XZ                ; CShowNormals::CShowNormals
  407. ; Function compile flags: /Ogs
  408. ; File d:\builds\nt32_fre\multimedia\directx\dxsdk\src\mview\gxu\shownormal.cpp
  409. ;    COMDAT ??0CShowNormals@@QAE@XZ
  410. _TEXT    SEGMENT
  411. ??0CShowNormals@@QAE@XZ PROC NEAR            ; CShowNormals::CShowNormals, COMDAT
  412. ; _this$ = ecx
  413.  
  414. ; 38   : {
  415.  
  416.   00000    8b c1         mov     eax, ecx
  417.   00002    33 c9         xor     ecx, ecx
  418.   00004    89 08         mov     DWORD PTR [eax], ecx
  419.   00006    89 48 04     mov     DWORD PTR [eax+4], ecx
  420.   00009    89 48 0c     mov     DWORD PTR [eax+12], ecx
  421.   0000c    89 48 10     mov     DWORD PTR [eax+16], ecx
  422.   0000f    89 48 14     mov     DWORD PTR [eax+20], ecx
  423.   00012    89 48 1c     mov     DWORD PTR [eax+28], ecx
  424.   00015    89 48 20     mov     DWORD PTR [eax+32], ecx
  425.  
  426. ; 39   : }
  427.  
  428.   00018    c3         ret     0
  429. ??0CShowNormals@@QAE@XZ ENDP                ; CShowNormals::CShowNormals
  430. _TEXT    ENDS
  431. PUBLIC    ??1CShowNormals@@QAE@XZ                ; CShowNormals::~CShowNormals
  432. EXTRN    ??3@YAXPAX@Z:NEAR                ; operator delete
  433. ; Function compile flags: /Ogs
  434. ;    COMDAT ??1CShowNormals@@QAE@XZ
  435. _TEXT    SEGMENT
  436. ??1CShowNormals@@QAE@XZ PROC NEAR            ; CShowNormals::~CShowNormals, COMDAT
  437. ; _this$ = ecx
  438.  
  439. ; 47   : }
  440.  
  441.   00000    8b ff         npad     2
  442.   00002    56         push     esi
  443.  
  444. ; 42   : {
  445.  
  446.   00003    8b f1         mov     esi, ecx
  447.  
  448. ; 43   :     GXRELEASE(m_pVertexBuffer);
  449.  
  450.   00005    8b 46 04     mov     eax, DWORD PTR [esi+4]
  451.   00008    85 c0         test     eax, eax
  452.   0000a    74 0a         je     SHORT $L56250
  453.   0000c    8b 08         mov     ecx, DWORD PTR [eax]
  454.   0000e    50         push     eax
  455.   0000f    ff 51 08     call     DWORD PTR [ecx+8]
  456.   00012    83 66 04 00     and     DWORD PTR [esi+4], 0
  457. $L56250:
  458.  
  459. ; 44   :     GXRELEASE(m_pDevice);
  460.  
  461.   00016    8b 06         mov     eax, DWORD PTR [esi]
  462.   00018    85 c0         test     eax, eax
  463.   0001a    74 09         je     SHORT $L56254
  464.   0001c    8b 08         mov     ecx, DWORD PTR [eax]
  465.   0001e    50         push     eax
  466.   0001f    ff 51 08     call     DWORD PTR [ecx+8]
  467.   00022    83 26 00     and     DWORD PTR [esi], 0
  468. $L56254:
  469.  
  470. ; 45   : 
  471. ; 46   :     delete []m_rgaeAttributeTable;
  472.  
  473.   00025    ff 76 1c     push     DWORD PTR [esi+28]
  474.   00028    e8 00 00 00 00     call     ??3@YAXPAX@Z        ; operator delete
  475.   0002d    59         pop     ecx
  476.   0002e    5e         pop     esi
  477.  
  478. ; 47   : }
  479.  
  480.   0002f    c3         ret     0
  481. ??1CShowNormals@@QAE@XZ ENDP                ; CShowNormals::~CShowNormals
  482. _TEXT    ENDS
  483. PUBLIC    ??0D3DXVECTOR3@@QAE@XZ                ; D3DXVECTOR3::D3DXVECTOR3
  484. ; Function compile flags: /Ogs
  485. ; File d:\builds\nt32_fre\public\sdk\inc\d3dx9math.h
  486. ;    COMDAT ??0D3DXVECTOR3@@QAE@XZ
  487. _TEXT    SEGMENT
  488. ??0D3DXVECTOR3@@QAE@XZ PROC NEAR            ; D3DXVECTOR3::D3DXVECTOR3, COMDAT
  489. ; _this$ = ecx
  490.  
  491. ; 165  :     D3DXVECTOR3() {};
  492.  
  493.   00000    8b c1         mov     eax, ecx
  494.   00002    c3         ret     0
  495. ??0D3DXVECTOR3@@QAE@XZ ENDP                ; D3DXVECTOR3::D3DXVECTOR3
  496. _TEXT    ENDS
  497. PUBLIC    ?CreateEmptyOutline@CShowNormals@@AAEJXZ    ; CShowNormals::CreateEmptyOutline
  498. ; Function compile flags: /Ogs
  499. ; File d:\builds\nt32_fre\multimedia\directx\dxsdk\src\mview\gxu\shownormal.cpp
  500. ;    COMDAT ?CreateEmptyOutline@CShowNormals@@AAEJXZ
  501. _TEXT    SEGMENT
  502. ?CreateEmptyOutline@CShowNormals@@AAEJXZ PROC NEAR    ; CShowNormals::CreateEmptyOutline, COMDAT
  503. ; _this$ = ecx
  504.  
  505. ; 484  : }
  506.  
  507.   00000    8b ff         npad     2
  508.   00002    56         push     esi
  509.  
  510. ; 475  : {
  511.  
  512.   00003    8b f1         mov     esi, ecx
  513.  
  514. ; 476  :     delete []m_rgaeAttributeTable;
  515.  
  516.   00005    ff 76 1c     push     DWORD PTR [esi+28]
  517.   00008    e8 00 00 00 00     call     ??3@YAXPAX@Z        ; operator delete
  518.  
  519. ; 477  :     m_rgaeAttributeTable = NULL;
  520. ; 478  :     m_caeAttributeTable = 0;
  521. ; 479  : 
  522. ; 480  :     GXRELEASE(m_pVertexBuffer);
  523.  
  524.   0000d    8b 46 04     mov     eax, DWORD PTR [esi+4]
  525.   00010    83 66 1c 00     and     DWORD PTR [esi+28], 0
  526.   00014    83 66 20 00     and     DWORD PTR [esi+32], 0
  527.   00018    85 c0         test     eax, eax
  528.   0001a    59         pop     ecx
  529.   0001b    74 0a         je     SHORT $L56448
  530.   0001d    8b 08         mov     ecx, DWORD PTR [eax]
  531.   0001f    50         push     eax
  532.   00020    ff 51 08     call     DWORD PTR [ecx+8]
  533.   00023    83 66 04 00     and     DWORD PTR [esi+4], 0
  534. $L56448:
  535.  
  536. ; 481  :     GXRELEASE(m_pDevice);
  537.  
  538.   00027    8b 06         mov     eax, DWORD PTR [esi]
  539.   00029    85 c0         test     eax, eax
  540.   0002b    74 09         je     SHORT $L56452
  541.   0002d    8b 08         mov     ecx, DWORD PTR [eax]
  542.   0002f    50         push     eax
  543.   00030    ff 51 08     call     DWORD PTR [ecx+8]
  544.   00033    83 26 00     and     DWORD PTR [esi], 0
  545. $L56452:
  546.  
  547. ; 482  : 
  548. ; 483  :     return S_OK;
  549.  
  550.   00036    33 c0         xor     eax, eax
  551.   00038    5e         pop     esi
  552.  
  553. ; 484  : }
  554.  
  555.   00039    c3         ret     0
  556. ?CreateEmptyOutline@CShowNormals@@AAEJXZ ENDP        ; CShowNormals::CreateEmptyOutline
  557. _TEXT    ENDS
  558. PUBLIC    ??0D3DXMATRIX@@QAE@XZ                ; D3DXMATRIX::D3DXMATRIX
  559. ; Function compile flags: /Ogs
  560. ; File d:\builds\nt32_fre\public\sdk\inc\d3dx9math.h
  561. ;    COMDAT ??0D3DXMATRIX@@QAE@XZ
  562. _TEXT    SEGMENT
  563. ??0D3DXMATRIX@@QAE@XZ PROC NEAR                ; D3DXMATRIX::D3DXMATRIX, COMDAT
  564. ; _this$ = ecx
  565.  
  566. ; 315  :     D3DXMATRIX() {};
  567.  
  568.   00000    8b c1         mov     eax, ecx
  569.   00002    c3         ret     0
  570. ??0D3DXMATRIX@@QAE@XZ ENDP                ; D3DXMATRIX::D3DXMATRIX
  571. _TEXT    ENDS
  572. PUBLIC    ??0D3DXVECTOR3@@QAE@MMM@Z            ; D3DXVECTOR3::D3DXVECTOR3
  573. EXTRN    __fltused:NEAR
  574. ; Function compile flags: /Ogs
  575. ; File d:\builds\nt32_fre\public\sdk\inc\d3dx9math.inl
  576. ;    COMDAT ??0D3DXVECTOR3@@QAE@MMM@Z
  577. _TEXT    SEGMENT
  578. _fx$ = 8                        ; size = 4
  579. _fy$ = 12                        ; size = 4
  580. _fz$ = 16                        ; size = 4
  581. ??0D3DXVECTOR3@@QAE@MMM@Z PROC NEAR            ; D3DXVECTOR3::D3DXVECTOR3, COMDAT
  582. ; _this$ = ecx
  583.  
  584. ; 308  : }
  585.  
  586.   00000    8b ff         npad     2
  587.  
  588. ; 304  : {
  589.  
  590.   00002    55         push     ebp
  591.   00003    8b ec         mov     ebp, esp
  592.   00005    8b c1         mov     eax, ecx
  593.  
  594. ; 305  :     x = fx;
  595.  
  596.   00007    8b 4d 08     mov     ecx, DWORD PTR _fx$[ebp]
  597.   0000a    89 08         mov     DWORD PTR [eax], ecx
  598.  
  599. ; 306  :     y = fy;
  600.  
  601.   0000c    8b 4d 0c     mov     ecx, DWORD PTR _fy$[ebp]
  602.   0000f    89 48 04     mov     DWORD PTR [eax+4], ecx
  603.  
  604. ; 307  :     z = fz;
  605.  
  606.   00012    8b 4d 10     mov     ecx, DWORD PTR _fz$[ebp]
  607.   00015    89 48 08     mov     DWORD PTR [eax+8], ecx
  608.  
  609. ; 308  : }
  610.  
  611.   00018    5d         pop     ebp
  612.   00019    c2 0c 00     ret     12            ; 0000000cH
  613. ??0D3DXVECTOR3@@QAE@MMM@Z ENDP                ; D3DXVECTOR3::D3DXVECTOR3
  614. _TEXT    ENDS
  615. PUBLIC    ??YD3DXVECTOR3@@QAEAAU0@ABU0@@Z            ; D3DXVECTOR3::operator+=
  616. ; Function compile flags: /Ogs
  617. ;    COMDAT ??YD3DXVECTOR3@@QAEAAU0@ABU0@@Z
  618. _TEXT    SEGMENT
  619. _v$ = 8                            ; size = 4
  620. ??YD3DXVECTOR3@@QAEAAU0@ABU0@@Z PROC NEAR        ; D3DXVECTOR3::operator+=, COMDAT
  621. ; _this$ = ecx
  622.  
  623. ; 332  :     return *this;
  624. ; 333  : }
  625.  
  626.   00000    8b ff         npad     2
  627.  
  628. ; 328  : {
  629.  
  630.   00002    55         push     ebp
  631.   00003    8b ec         mov     ebp, esp
  632.   00005    8b c1         mov     eax, ecx
  633.  
  634. ; 329  :     x += v.x;
  635.  
  636.   00007    8b 4d 08     mov     ecx, DWORD PTR _v$[ebp]
  637.   0000a    d9 01         fld     DWORD PTR [ecx]
  638.   0000c    d8 00         fadd     DWORD PTR [eax]
  639.   0000e    d9 18         fstp     DWORD PTR [eax]
  640.  
  641. ; 330  :     y += v.y;
  642.  
  643.   00010    d9 41 04     fld     DWORD PTR [ecx+4]
  644.   00013    d8 40 04     fadd     DWORD PTR [eax+4]
  645.   00016    d9 58 04     fstp     DWORD PTR [eax+4]
  646.  
  647. ; 331  :     z += v.z;
  648.  
  649.   00019    d9 41 08     fld     DWORD PTR [ecx+8]
  650.   0001c    d8 40 08     fadd     DWORD PTR [eax+8]
  651.   0001f    d9 58 08     fstp     DWORD PTR [eax+8]
  652.  
  653. ; 332  :     return *this;
  654. ; 333  : }
  655.  
  656.   00022    5d         pop     ebp
  657.   00023    c2 04 00     ret     4
  658. ??YD3DXVECTOR3@@QAEAAU0@ABU0@@Z ENDP            ; D3DXVECTOR3::operator+=
  659. _TEXT    ENDS
  660. PUBLIC    ??XD3DXVECTOR3@@QAEAAU0@M@Z            ; D3DXVECTOR3::operator*=
  661. ; Function compile flags: /Ogs
  662. ;    COMDAT ??XD3DXVECTOR3@@QAEAAU0@M@Z
  663. _TEXT    SEGMENT
  664. _f$ = 8                            ; size = 4
  665. ??XD3DXVECTOR3@@QAEAAU0@M@Z PROC NEAR            ; D3DXVECTOR3::operator*=, COMDAT
  666. ; _this$ = ecx
  667.  
  668. ; 350  :     return *this;
  669. ; 351  : }
  670.  
  671.   00000    8b ff         npad     2
  672.  
  673. ; 346  : {
  674.  
  675.   00002    55         push     ebp
  676.   00003    8b ec         mov     ebp, esp
  677.  
  678. ; 347  :     x *= f;
  679.  
  680.   00005    d9 45 08     fld     DWORD PTR _f$[ebp]
  681.   00008    8b c1         mov     eax, ecx
  682.   0000a    d8 08         fmul     DWORD PTR [eax]
  683.   0000c    d9 18         fstp     DWORD PTR [eax]
  684.  
  685. ; 348  :     y *= f;
  686.  
  687.   0000e    d9 45 08     fld     DWORD PTR _f$[ebp]
  688.   00011    d8 48 04     fmul     DWORD PTR [eax+4]
  689.   00014    d9 58 04     fstp     DWORD PTR [eax+4]
  690.  
  691. ; 349  :     z *= f;
  692.  
  693.   00017    d9 45 08     fld     DWORD PTR _f$[ebp]
  694.   0001a    d8 48 08     fmul     DWORD PTR [eax+8]
  695.   0001d    d9 58 08     fstp     DWORD PTR [eax+8]
  696.  
  697. ; 350  :     return *this;
  698. ; 351  : }
  699.  
  700.   00020    5d         pop     ebp
  701.   00021    c2 04 00     ret     4
  702. ??XD3DXVECTOR3@@QAEAAU0@M@Z ENDP            ; D3DXVECTOR3::operator*=
  703. _TEXT    ENDS
  704. PUBLIC    ??0D3DXVECTOR4@@QAE@MMMM@Z            ; D3DXVECTOR4::D3DXVECTOR4
  705. ; Function compile flags: /Ogs
  706. ;    COMDAT ??0D3DXVECTOR4@@QAE@MMMM@Z
  707. _TEXT    SEGMENT
  708. _fx$ = 8                        ; size = 4
  709. _fy$ = 12                        ; size = 4
  710. _fz$ = 16                        ; size = 4
  711. _fw$ = 20                        ; size = 4
  712. ??0D3DXVECTOR4@@QAE@MMMM@Z PROC NEAR            ; D3DXVECTOR4::D3DXVECTOR4, COMDAT
  713. ; _this$ = ecx
  714.  
  715. ; 544  : }
  716.  
  717.   00000    8b ff         npad     2
  718.  
  719. ; 539  : {
  720.  
  721.   00002    55         push     ebp
  722.   00003    8b ec         mov     ebp, esp
  723.   00005    8b c1         mov     eax, ecx
  724.  
  725. ; 540  :     x = fx;
  726.  
  727.   00007    8b 4d 08     mov     ecx, DWORD PTR _fx$[ebp]
  728.   0000a    89 08         mov     DWORD PTR [eax], ecx
  729.  
  730. ; 541  :     y = fy;
  731.  
  732.   0000c    8b 4d 0c     mov     ecx, DWORD PTR _fy$[ebp]
  733.   0000f    89 48 04     mov     DWORD PTR [eax+4], ecx
  734.  
  735. ; 542  :     z = fz;
  736.  
  737.   00012    8b 4d 10     mov     ecx, DWORD PTR _fz$[ebp]
  738.   00015    89 48 08     mov     DWORD PTR [eax+8], ecx
  739.  
  740. ; 543  :     w = fw;
  741.  
  742.   00018    8b 4d 14     mov     ecx, DWORD PTR _fw$[ebp]
  743.   0001b    89 48 0c     mov     DWORD PTR [eax+12], ecx
  744.  
  745. ; 544  : }
  746.  
  747.   0001e    5d         pop     ebp
  748.   0001f    c2 10 00     ret     16            ; 00000010H
  749. ??0D3DXVECTOR4@@QAE@MMMM@Z ENDP                ; D3DXVECTOR4::D3DXVECTOR4
  750. _TEXT    ENDS
  751. PUBLIC    __real@3b808081
  752. PUBLIC    ??0D3DXCOLOR@@QAE@K@Z                ; D3DXCOLOR::D3DXCOLOR
  753. ;    COMDAT __real@3b808081
  754. CONST    SEGMENT
  755. __real@3b808081 DD 03b808081r            ; 0.00392157
  756. ; Function compile flags: /Ogs
  757. CONST    ENDS
  758. ;    COMDAT ??0D3DXCOLOR@@QAE@K@Z
  759. _TEXT    SEGMENT
  760. tv186 = 8                        ; size = 4
  761. tv185 = 8                        ; size = 4
  762. tv184 = 8                        ; size = 4
  763. tv183 = 8                        ; size = 4
  764. _dw$ = 8                        ; size = 4
  765. ??0D3DXCOLOR@@QAE@K@Z PROC NEAR                ; D3DXCOLOR::D3DXCOLOR, COMDAT
  766. ; _this$ = ecx
  767.  
  768. ; 1352 : }
  769.  
  770.   00000    8b ff         npad     2
  771.  
  772. ; 1346 : {
  773.  
  774.   00002    55         push     ebp
  775.   00003    8b ec         mov     ebp, esp
  776.  
  777. ; 1347 :     CONST FLOAT f = 1.0f / 255.0f;
  778. ; 1348 :     r = f * (FLOAT) (unsigned char) (dw >> 16);
  779.  
  780.   00005    d9 05 00 00 00
  781.     00         fld     DWORD PTR __real@3b808081
  782.   0000b    8b c1         mov     eax, ecx
  783.   0000d    8b 4d 08     mov     ecx, DWORD PTR _dw$[ebp]
  784.   00010    8b d1         mov     edx, ecx
  785.   00012    c1 ea 10     shr     edx, 16            ; 00000010H
  786.   00015    0f b6 d2     movzx     edx, dl
  787.   00018    89 55 08     mov     DWORD PTR tv186[ebp], edx
  788.  
  789. ; 1349 :     g = f * (FLOAT) (unsigned char) (dw >>  8);
  790.  
  791.   0001b    8b d1         mov     edx, ecx
  792.   0001d    c1 ea 08     shr     edx, 8
  793.   00020    db 45 08     fild     DWORD PTR tv186[ebp]
  794.   00023    0f b6 d2     movzx     edx, dl
  795.   00026    d8 c9         fmul     ST(0), ST(1)
  796.   00028    89 55 08     mov     DWORD PTR tv185[ebp], edx
  797.  
  798. ; 1350 :     b = f * (FLOAT) (unsigned char) (dw >>  0);
  799.  
  800.   0002b    0f b6 d1     movzx     edx, cl
  801.   0002e    d9 18         fstp     DWORD PTR [eax]
  802.   00030    db 45 08     fild     DWORD PTR tv185[ebp]
  803.   00033    89 55 08     mov     DWORD PTR tv184[ebp], edx
  804.  
  805. ; 1351 :     a = f * (FLOAT) (unsigned char) (dw >> 24);
  806.  
  807.   00036    c1 e9 18     shr     ecx, 24            ; 00000018H
  808.   00039    d8 c9         fmul     ST(0), ST(1)
  809.   0003b    d9 58 04     fstp     DWORD PTR [eax+4]
  810.   0003e    db 45 08     fild     DWORD PTR tv184[ebp]
  811.   00041    89 4d 08     mov     DWORD PTR tv183[ebp], ecx
  812.   00044    d8 c9         fmul     ST(0), ST(1)
  813.   00046    d9 58 08     fstp     DWORD PTR [eax+8]
  814.   00049    db 45 08     fild     DWORD PTR tv183[ebp]
  815.   0004c    d8 c9         fmul     ST(0), ST(1)
  816.   0004e    d9 58 0c     fstp     DWORD PTR [eax+12]
  817.   00051    dd d8         fstp     ST(0)
  818.  
  819. ; 1352 : }
  820.  
  821.   00053    5d         pop     ebp
  822.   00054    c2 04 00     ret     4
  823. ??0D3DXCOLOR@@QAE@K@Z ENDP                ; D3DXCOLOR::D3DXCOLOR
  824. _TEXT    ENDS
  825. PUBLIC    ?CWeights@DXCrackFVF@@QAEKXZ            ; DXCrackFVF::CWeights
  826. ; Function compile flags: /Ogs
  827. ; File d:\builds\nt32_fre\multimedia\directx\dxsdk\src\mview\gxu\gxcrackfvf.h
  828. ;    COMDAT ?CWeights@DXCrackFVF@@QAEKXZ
  829. _TEXT    SEGMENT
  830. ?CWeights@DXCrackFVF@@QAEKXZ PROC NEAR            ; DXCrackFVF::CWeights, COMDAT
  831. ; _this$ = ecx
  832.  
  833. ; 76   :     inline DWORD        CWeights()      { return m_cWeights; }
  834.  
  835.   00000    8b 41 38     mov     eax, DWORD PTR [ecx+56]
  836.   00003    c3         ret     0
  837. ?CWeights@DXCrackFVF@@QAEKXZ ENDP            ; DXCrackFVF::CWeights
  838. _TEXT    ENDS
  839. PUBLIC    ?BIndexedWeights@DXCrackFVF@@QAEHXZ        ; DXCrackFVF::BIndexedWeights
  840. ; Function compile flags: /Ogs
  841. ;    COMDAT ?BIndexedWeights@DXCrackFVF@@QAEHXZ
  842. _TEXT    SEGMENT
  843. ?BIndexedWeights@DXCrackFVF@@QAEHXZ PROC NEAR        ; DXCrackFVF::BIndexedWeights, COMDAT
  844. ; _this$ = ecx
  845.  
  846. ; 81   :     inline BOOL         BIndexedWeights() { return (m_dwFVF & D3DFVF_LASTBETA_UBYTE4|D3DFVF_LASTBETA_D3DCOLOR) && m_cWeights; }
  847.  
  848.   00000    8b 01         mov     eax, DWORD PTR [ecx]
  849.   00002    25 00 10 00 00     and     eax, 4096        ; 00001000H
  850.   00007    6a 00         push     0
  851.   00009    0d 00 80 00 00     or     eax, 32768        ; 00008000H
  852.   0000e    58         pop     eax
  853.   0000f    74 06         je     SHORT $L56548
  854.   00011    39 41 38     cmp     DWORD PTR [ecx+56], eax
  855.   00014    74 01         je     SHORT $L56548
  856.   00016    40         inc     eax
  857. $L56548:
  858.   00017    c3         ret     0
  859. ?BIndexedWeights@DXCrackFVF@@QAEHXZ ENDP        ; DXCrackFVF::BIndexedWeights
  860. _TEXT    ENDS
  861. PUBLIC    ??0DXCrackFVF@@QAE@K@Z                ; DXCrackFVF::DXCrackFVF
  862. ; Function compile flags: /Ogs
  863. ;    COMDAT ??0DXCrackFVF@@QAE@K@Z
  864. _TEXT    SEGMENT
  865. _dwFVF$ = 8                        ; size = 4
  866. ??0DXCrackFVF@@QAE@K@Z PROC NEAR            ; DXCrackFVF::DXCrackFVF, COMDAT
  867. ; _this$ = ecx
  868.  
  869. ; 192  : }
  870.  
  871.   00000    8b ff         npad     2
  872.  
  873. ; 115  : {
  874.  
  875.   00002    55         push     ebp
  876.   00003    8b ec         mov     ebp, esp
  877.   00005    8b c1         mov     eax, ecx
  878.   00007    53         push     ebx
  879.   00008    8b 5d 08     mov     ebx, DWORD PTR _dwFVF$[ebp]
  880.   0000b    56         push     esi
  881.  
  882. ; 116  :     DWORD oCur = 0;
  883. ; 117  :     DWORD dwPosition;
  884. ; 118  :     DWORD dwTexCoordInfo;
  885. ; 119  :     DWORD iTexCoord;
  886. ; 120  :     DWORD dwTexCoordSize;
  887. ; 121  :     m_oTex[0] = 0;
  888. ; 122  : 
  889. ; 123  :     dwPosition = dwFVF & D3DFVF_POSITION_MASK;
  890.  
  891.   0000c    8b d3         mov     edx, ebx
  892.   0000e    57         push     edi
  893.   0000f    33 ff         xor     edi, edi
  894.   00011    81 e2 0e 40 00
  895.     00         and     edx, 16398        ; 0000400eH
  896.   00017    33 c9         xor     ecx, ecx
  897.  
  898. ; 124  : 
  899. ; 125  :     if (dwPosition == D3DFVF_XYZ)
  900.  
  901.   00019    83 fa 02     cmp     edx, 2
  902.   0001c    8d 70 18     lea     esi, DWORD PTR [eax+24]
  903.   0001f    89 18         mov     DWORD PTR [eax], ebx
  904.   00021    89 78 08     mov     DWORD PTR [eax+8], edi
  905.   00024    89 78 0c     mov     DWORD PTR [eax+12], edi
  906.   00027    89 78 10     mov     DWORD PTR [eax+16], edi
  907.   0002a    89 78 14     mov     DWORD PTR [eax+20], edi
  908.   0002d    89 78 38     mov     DWORD PTR [eax+56], edi
  909.   00030    89 78 3c     mov     DWORD PTR [eax+60], edi
  910.   00033    89 3e         mov     DWORD PTR [esi], edi
  911.   00035    75 05         jne     SHORT $L55539
  912.  
  913. ; 126  :     {
  914. ; 127  :         oCur += 3 * sizeof(float);
  915.  
  916.   00037    6a 0c         push     12            ; 0000000cH
  917. $L56556:
  918.   00039    59         pop     ecx
  919.  
  920. ; 128  :     }
  921. ; 129  :     else if (dwPosition == D3DFVF_XYZRHW)
  922.  
  923.   0003a    eb 1d         jmp     SHORT $L56553
  924. $L55539:
  925.   0003c    83 fa 04     cmp     edx, 4
  926.   0003f    75 04         jne     SHORT $L55542
  927.  
  928. ; 130  :     {
  929. ; 131  :         oCur += 4 * sizeof(float);
  930.  
  931.   00041    6a 10         push     16            ; 00000010H
  932.  
  933. ; 132  :     }
  934. ; 133  :     else if (dwPosition >= D3DFVF_XYZB1)
  935.  
  936.   00043    eb f4         jmp     SHORT $L56556
  937. $L55542:
  938.   00045    83 fa 06     cmp     edx, 6
  939.   00048    72 0f         jb     SHORT $L56553
  940.  
  941. ; 134  :     {
  942. ; 135  :         m_cWeights = (dwPosition >> 1) - 2;
  943.  
  944.   0004a    d1 ea         shr     edx, 1
  945.   0004c    8d 4a fe     lea     ecx, DWORD PTR [edx-2]
  946.   0004f    89 48 38     mov     DWORD PTR [eax+56], ecx
  947.  
  948. ; 136  :         oCur += (3 + m_cWeights) * sizeof(float);
  949.  
  950.   00052    8d 0c 8d 0c 00
  951.     00 00         lea     ecx, DWORD PTR [ecx*4+12]
  952. $L56553:
  953.  
  954. ; 137  :     }
  955. ; 138  : 
  956. ; 139  :     if ( dwFVF & D3DFVF_NORMAL )
  957.  
  958.   00059    f6 c3 10     test     bl, 16            ; 00000010H
  959.   0005c    74 06         je     SHORT $L55547
  960.  
  961. ; 140  :     {
  962. ; 141  :         m_oNormal = oCur;
  963.  
  964.   0005e    89 48 08     mov     DWORD PTR [eax+8], ecx
  965.  
  966. ; 142  :         oCur += 3 * sizeof(float);
  967.  
  968.   00061    83 c1 0c     add     ecx, 12            ; 0000000cH
  969. $L55547:
  970.  
  971. ; 143  :     }
  972. ; 144  : 
  973. ; 145  :     if ( dwFVF & D3DFVF_PSIZE )
  974.  
  975.   00064    f6 c3 20     test     bl, 32            ; 00000020H
  976.   00067    74 06         je     SHORT $L56554
  977.  
  978. ; 146  :     {
  979. ; 147  :         m_oPointSize = oCur;
  980.  
  981.   00069    89 48 0c     mov     DWORD PTR [eax+12], ecx
  982.  
  983. ; 148  :         oCur += sizeof(float);
  984.  
  985.   0006c    83 c1 04     add     ecx, 4
  986. $L56554:
  987.  
  988. ; 149  :     }
  989. ; 150  : 
  990. ; 151  :     if ( dwFVF & D3DFVF_DIFFUSE )
  991.  
  992.   0006f    f6 c3 40     test     bl, 64            ; 00000040H
  993.   00072    74 06         je     SHORT $L56555
  994.  
  995. ; 152  :     {
  996. ; 153  :         m_oDiffuse = oCur;
  997.  
  998.   00074    89 48 10     mov     DWORD PTR [eax+16], ecx
  999.  
  1000. ; 154  :         oCur += sizeof(D3DCOLOR);
  1001.  
  1002.   00077    83 c1 04     add     ecx, 4
  1003. $L56555:
  1004.  
  1005. ; 155  :     }
  1006. ; 156  : 
  1007. ; 157  :     if ( dwFVF & D3DFVF_SPECULAR )
  1008.  
  1009.   0007a    84 db         test     bl, bl
  1010.   0007c    79 06         jns     SHORT $L55553
  1011.  
  1012. ; 158  :     {
  1013. ; 159  :         m_oSpecular = oCur;
  1014.  
  1015.   0007e    89 48 14     mov     DWORD PTR [eax+20], ecx
  1016.  
  1017. ; 160  :         oCur += sizeof(D3DCOLOR);
  1018.  
  1019.   00081    83 c1 04     add     ecx, 4
  1020. $L55553:
  1021.  
  1022. ; 161  :     }
  1023. ; 162  : 
  1024. ; 163  :     if ( dwFVF & D3DFVF_TEXCOUNT_MASK )
  1025.  
  1026.   00084    f6 c7 0f     test     bh, 15            ; 0000000fH
  1027.   00087    74 3d         je     SHORT $L55559
  1028.  
  1029. ; 164  :     {
  1030. ; 165  :         m_oTex[0] = oCur;
  1031. ; 166  : 
  1032. ; 167  :         // only one tu/tv set currently supported
  1033. ; 168  : 
  1034. ; 169  :         m_cTexCoords = ((dwFVF & D3DFVF_TEXCOUNT_MASK)>>D3DFVF_TEXCOUNT_SHIFT);
  1035.  
  1036.   00089    8b d3         mov     edx, ebx
  1037.   0008b    c1 ea 08     shr     edx, 8
  1038.   0008e    83 e2 0f     and     edx, 15            ; 0000000fH
  1039.  
  1040. ; 170  : 
  1041. ; 171  :         if(m_cTexCoords > 8)
  1042.  
  1043.   00091    83 fa 08     cmp     edx, 8
  1044.   00094    89 0e         mov     DWORD PTR [esi], ecx
  1045.   00096    89 50 3c     mov     DWORD PTR [eax+60], edx
  1046.   00099    76 07         jbe     SHORT $L55556
  1047.  
  1048. ; 172  :             m_cTexCoords = 8;
  1049.  
  1050.   0009b    c7 40 3c 08 00
  1051.     00 00         mov     DWORD PTR [eax+60], 8
  1052. $L55556:
  1053.  
  1054. ; 173  : 
  1055. ; 174  :         // all 2d, then go quick route
  1056. ; 175  :         //if ((dwFVF & 0xffff0000) == 0)
  1057. ; 176  :         //{
  1058. ; 177  :             //oCur += sizeof(float) * 2 * m_cTexCoords;
  1059. ; 178  :         //}
  1060. ; 179  :         //else
  1061. ; 180  :         {
  1062. ; 181  :             dwTexCoordSize = (dwFVF & 0xffff0000) >> 16;
  1063.  
  1064.   000a2    c1 eb 10     shr     ebx, 16            ; 00000010H
  1065.  
  1066. ; 182  :             for (iTexCoord = 0; iTexCoord < m_cTexCoords; iTexCoord++)
  1067.  
  1068.   000a5    33 d2         xor     edx, edx
  1069.   000a7    39 78 3c     cmp     DWORD PTR [eax+60], edi
  1070.   000aa    76 1a         jbe     SHORT $L55559
  1071. $L55557:
  1072.  
  1073. ; 183  :             {
  1074. ; 184  :                 m_oTex[iTexCoord] = oCur;
  1075. ; 185  :                 oCur += x_rgdwTexCoordSize[dwTexCoordSize & 0x3];
  1076.  
  1077.   000ac    8b fb         mov     edi, ebx
  1078.   000ae    83 e7 03     and     edi, 3
  1079.   000b1    89 0e         mov     DWORD PTR [esi], ecx
  1080.   000b3    03 0c bd 00 00
  1081.     00 00         add     ecx, DWORD PTR _x_rgdwTexCoordSize[edi*4]
  1082.  
  1083. ; 186  :                 dwTexCoordSize = dwTexCoordSize >> 2;
  1084.  
  1085.   000ba    c1 eb 02     shr     ebx, 2
  1086.   000bd    42         inc     edx
  1087.   000be    83 c6 04     add     esi, 4
  1088.   000c1    3b 50 3c     cmp     edx, DWORD PTR [eax+60]
  1089.   000c4    72 e6         jb     SHORT $L55557
  1090. $L55559:
  1091.   000c6    5f         pop     edi
  1092.   000c7    5e         pop     esi
  1093.  
  1094. ; 187  :             }
  1095. ; 188  :         }
  1096. ; 189  :     }
  1097. ; 190  : 
  1098. ; 191  :     m_cBytesPerVertex = oCur;
  1099.  
  1100.   000c8    89 48 04     mov     DWORD PTR [eax+4], ecx
  1101.   000cb    5b         pop     ebx
  1102.  
  1103. ; 192  : }
  1104.  
  1105.   000cc    5d         pop     ebp
  1106.   000cd    c2 04 00     ret     4
  1107. ??0DXCrackFVF@@QAE@K@Z ENDP                ; DXCrackFVF::DXCrackFVF
  1108. _TEXT    ENDS
  1109. PUBLIC    ?SetPosition@DXCrackFVF@@QAEXPAXPAUD3DXVECTOR3@@@Z ; DXCrackFVF::SetPosition
  1110. ; Function compile flags: /Ogs
  1111. ;    COMDAT ?SetPosition@DXCrackFVF@@QAEXPAXPAUD3DXVECTOR3@@@Z
  1112. _TEXT    SEGMENT
  1113. _pvPoint$ = 8                        ; size = 4
  1114. _pvPos$ = 12                        ; size = 4
  1115. ?SetPosition@DXCrackFVF@@QAEXPAXPAUD3DXVECTOR3@@@Z PROC NEAR ; DXCrackFVF::SetPosition, COMDAT
  1116. ; _this$ = ecx
  1117.  
  1118. ; 211  : }
  1119.  
  1120.   00000    8b ff         npad     2
  1121.  
  1122. ; 209  : {
  1123.  
  1124.   00002    55         push     ebp
  1125.   00003    8b ec         mov     ebp, esp
  1126.   00005    56         push     esi
  1127.  
  1128. ; 210  :     memcpy(pvPoint, pvPos, sizeof(D3DXVECTOR3));
  1129.  
  1130.   00006    8b 75 0c     mov     esi, DWORD PTR _pvPos$[ebp]
  1131.   00009    57         push     edi
  1132.   0000a    8b 7d 08     mov     edi, DWORD PTR _pvPoint$[ebp]
  1133.   0000d    a5         movsd
  1134.   0000e    a5         movsd
  1135.   0000f    a5         movsd
  1136.   00010    5f         pop     edi
  1137.   00011    5e         pop     esi
  1138.  
  1139. ; 211  : }
  1140.  
  1141.   00012    5d         pop     ebp
  1142.   00013    c2 08 00     ret     8
  1143. ?SetPosition@DXCrackFVF@@QAEXPAXPAUD3DXVECTOR3@@@Z ENDP    ; DXCrackFVF::SetPosition
  1144. _TEXT    ENDS
  1145. PUBLIC    ?SetNormal@DXCrackFVF@@QAEXPAXPAUD3DXVECTOR3@@@Z ; DXCrackFVF::SetNormal
  1146. ; Function compile flags: /Ogs
  1147. ;    COMDAT ?SetNormal@DXCrackFVF@@QAEXPAXPAUD3DXVECTOR3@@@Z
  1148. _TEXT    SEGMENT
  1149. _pvPoint$ = 8                        ; size = 4
  1150. _pvNormal$ = 12                        ; size = 4
  1151. ?SetNormal@DXCrackFVF@@QAEXPAXPAUD3DXVECTOR3@@@Z PROC NEAR ; DXCrackFVF::SetNormal, COMDAT
  1152. ; _this$ = ecx
  1153.  
  1154. ; 223  :     }
  1155. ; 224  : }
  1156.  
  1157.   00000    8b ff         npad     2
  1158.  
  1159. ; 219  : {
  1160.  
  1161.   00002    55         push     ebp
  1162.   00003    8b ec         mov     ebp, esp
  1163.  
  1164. ; 220  :     if (m_oNormal)
  1165.  
  1166.   00005    8b 41 08     mov     eax, DWORD PTR [ecx+8]
  1167.   00008    85 c0         test     eax, eax
  1168.   0000a    74 10         je     SHORT $L55577
  1169.  
  1170. ; 221  :     {
  1171. ; 222  :         memcpy(((PBYTE)pvPoint) + m_oNormal, pvNormal, sizeof(D3DXVECTOR3));
  1172.  
  1173.   0000c    8b 4d 08     mov     ecx, DWORD PTR _pvPoint$[ebp]
  1174.   0000f    56         push     esi
  1175.   00010    8b 75 0c     mov     esi, DWORD PTR _pvNormal$[ebp]
  1176.   00013    57         push     edi
  1177.   00014    8d 3c 08     lea     edi, DWORD PTR [eax+ecx]
  1178.   00017    a5         movsd
  1179.   00018    a5         movsd
  1180.   00019    a5         movsd
  1181.   0001a    5f         pop     edi
  1182.   0001b    5e         pop     esi
  1183. $L55577:
  1184.  
  1185. ; 223  :     }
  1186. ; 224  : }
  1187.  
  1188.   0001c    5d         pop     ebp
  1189.   0001d    c2 08 00     ret     8
  1190. ?SetNormal@DXCrackFVF@@QAEXPAXPAUD3DXVECTOR3@@@Z ENDP    ; DXCrackFVF::SetNormal
  1191. _TEXT    ENDS
  1192. PUBLIC    ?SetWeight@DXCrackFVF@@QAEXPAXIM@Z        ; DXCrackFVF::SetWeight
  1193. ; Function compile flags: /Ogs
  1194. ;    COMDAT ?SetWeight@DXCrackFVF@@QAEXPAXIM@Z
  1195. _TEXT    SEGMENT
  1196. _pvPoint$ = 8                        ; size = 4
  1197. _iWeight$ = 12                        ; size = 4
  1198. _fWeight$ = 16                        ; size = 4
  1199. ?SetWeight@DXCrackFVF@@QAEXPAXIM@Z PROC NEAR        ; DXCrackFVF::SetWeight, COMDAT
  1200. ; _this$ = ecx
  1201.  
  1202. ; 331  :     }
  1203. ; 332  : }
  1204.  
  1205.   00000    8b ff         npad     2
  1206.  
  1207. ; 327  : {
  1208.  
  1209.   00002    55         push     ebp
  1210.   00003    8b ec         mov     ebp, esp
  1211.  
  1212. ; 328  :     if (iWeight < m_cWeights)
  1213.  
  1214.   00005    8b 45 0c     mov     eax, DWORD PTR _iWeight$[ebp]
  1215.   00008    3b 41 38     cmp     eax, DWORD PTR [ecx+56]
  1216.   0000b    73 0a         jae     SHORT $L55654
  1217.  
  1218. ; 329  :     {
  1219. ; 330  :         memcpy(((PBYTE)pvPoint) + sizeof(D3DXVECTOR3) + sizeof(float) * iWeight, &fWeight, sizeof(float));
  1220.  
  1221.   0000d    8b 4d 10     mov     ecx, DWORD PTR _fWeight$[ebp]
  1222.   00010    8b 55 08     mov     edx, DWORD PTR _pvPoint$[ebp]
  1223.   00013    89 4c 82 0c     mov     DWORD PTR [edx+eax*4+12], ecx
  1224. $L55654:
  1225.  
  1226. ; 331  :     }
  1227. ; 332  : }
  1228.  
  1229.   00017    5d         pop     ebp
  1230.   00018    c2 0c 00     ret     12            ; 0000000cH
  1231. ?SetWeight@DXCrackFVF@@QAEXPAXIM@Z ENDP            ; DXCrackFVF::SetWeight
  1232. _TEXT    ENDS
  1233. PUBLIC    ?SetIndices@DXCrackFVF@@QAEXPAXK@Z        ; DXCrackFVF::SetIndices
  1234. ; Function compile flags: /Ogs
  1235. ;    COMDAT ?SetIndices@DXCrackFVF@@QAEXPAXK@Z
  1236. _TEXT    SEGMENT
  1237. _pvPoint$ = 8                        ; size = 4
  1238. _dwIndices$ = 12                    ; size = 4
  1239. ?SetIndices@DXCrackFVF@@QAEXPAXK@Z PROC NEAR        ; DXCrackFVF::SetIndices, COMDAT
  1240. ; _this$ = ecx
  1241.  
  1242. ; 355  :     }
  1243. ; 356  : }
  1244.  
  1245.   00000    8b ff         npad     2
  1246.  
  1247. ; 351  : {
  1248.  
  1249.   00002    55         push     ebp
  1250.   00003    8b ec         mov     ebp, esp
  1251.   00005    56         push     esi
  1252.   00006    8b f1         mov     esi, ecx
  1253.  
  1254. ; 352  :     if (BIndexedWeights())
  1255.  
  1256.   00008    e8 00 00 00 00     call     ?BIndexedWeights@DXCrackFVF@@QAEHXZ ; DXCrackFVF::BIndexedWeights
  1257.   0000d    85 c0         test     eax, eax
  1258.   0000f    74 0d         je     SHORT $L55673
  1259.  
  1260. ; 353  :     {
  1261. ; 354  :         *((LPDWORD)(((PBYTE)pvPoint) + sizeof(D3DXVECTOR3) + sizeof(float) * (CWeights() - 1))) = dwIndices;
  1262.  
  1263.   00011    8b 46 38     mov     eax, DWORD PTR [esi+56]
  1264.   00014    8b 4d 0c     mov     ecx, DWORD PTR _dwIndices$[ebp]
  1265.   00017    8b 55 08     mov     edx, DWORD PTR _pvPoint$[ebp]
  1266.   0001a    89 4c 82 08     mov     DWORD PTR [edx+eax*4+8], ecx
  1267. $L55673:
  1268.   0001e    5e         pop     esi
  1269.  
  1270. ; 355  :     }
  1271. ; 356  : }
  1272.  
  1273.   0001f    5d         pop     ebp
  1274.   00020    c2 08 00     ret     8
  1275. ?SetIndices@DXCrackFVF@@QAEXPAXK@Z ENDP            ; DXCrackFVF::SetIndices
  1276. _TEXT    ENDS
  1277. PUBLIC    ?BIndexedWeights@CD3DXCrackDecl1@@QAEHXZ    ; CD3DXCrackDecl1::BIndexedWeights
  1278. ; Function compile flags: /Ogs
  1279. ; File d:\builds\nt32_fre\multimedia\directx\dxsdk\src\mview\gxu\crackdecl.h
  1280. ;    COMDAT ?BIndexedWeights@CD3DXCrackDecl1@@QAEHXZ
  1281. _TEXT    SEGMENT
  1282. ?BIndexedWeights@CD3DXCrackDecl1@@QAEHXZ PROC NEAR    ; CD3DXCrackDecl1::BIndexedWeights, COMDAT
  1283. ; _this$ = ecx
  1284.  
  1285. ; 184  :     BOOL BIndexedWeights()                           { return pIndexElement != NULL; }
  1286.  
  1287.   00000    33 c0         xor     eax, eax
  1288.   00002    39 81 90 00 00
  1289.     00         cmp     DWORD PTR [ecx+144], eax
  1290.   00008    0f 95 c0     setne     al
  1291.   0000b    c3         ret     0
  1292. ?BIndexedWeights@CD3DXCrackDecl1@@QAEHXZ ENDP        ; CD3DXCrackDecl1::BIndexedWeights
  1293. _TEXT    ENDS
  1294. PUBLIC    ?BNormal@CD3DXCrackDecl1@@QAEHXZ        ; CD3DXCrackDecl1::BNormal
  1295. ; Function compile flags: /Ogs
  1296. ;    COMDAT ?BNormal@CD3DXCrackDecl1@@QAEHXZ
  1297. _TEXT    SEGMENT
  1298. ?BNormal@CD3DXCrackDecl1@@QAEHXZ PROC NEAR        ; CD3DXCrackDecl1::BNormal, COMDAT
  1299. ; _this$ = ecx
  1300.  
  1301. ; 185  :     BOOL BNormal()                                   { return pNormalElement != NULL; }
  1302.  
  1303.   00000    33 c0         xor     eax, eax
  1304.   00002    39 81 94 00 00
  1305.     00         cmp     DWORD PTR [ecx+148], eax
  1306.   00008    0f 95 c0     setne     al
  1307.   0000b    c3         ret     0
  1308. ?BNormal@CD3DXCrackDecl1@@QAEHXZ ENDP            ; CD3DXCrackDecl1::BNormal
  1309. _TEXT    ENDS
  1310. PUBLIC    ?BTexCoord@CD3DXCrackDecl1@@QAEHI@Z        ; CD3DXCrackDecl1::BTexCoord
  1311. ; Function compile flags: /Ogs
  1312. ;    COMDAT ?BTexCoord@CD3DXCrackDecl1@@QAEHI@Z
  1313. _TEXT    SEGMENT
  1314. _iTexCoord$ = 8                        ; size = 4
  1315. ?BTexCoord@CD3DXCrackDecl1@@QAEHI@Z PROC NEAR        ; CD3DXCrackDecl1::BTexCoord, COMDAT
  1316. ; _this$ = ecx
  1317.  
  1318. ; 188  :     BOOL BTexCoord(UINT iTexCoord)                   { return rgpTextureElements[iTexCoord] != NULL; }
  1319.  
  1320.   00000    8b ff         npad     2
  1321.   00002    55         push     ebp
  1322.   00003    8b ec         mov     ebp, esp
  1323.   00005    8b 55 08     mov     edx, DWORD PTR _iTexCoord$[ebp]
  1324.   00008    33 c0         xor     eax, eax
  1325.   0000a    39 84 91 a0 00
  1326.     00 00         cmp     DWORD PTR [ecx+edx*4+160], eax
  1327.   00011    0f 95 c0     setne     al
  1328.   00014    5d         pop     ebp
  1329.   00015    c2 04 00     ret     4
  1330. ?BTexCoord@CD3DXCrackDecl1@@QAEHI@Z ENDP        ; CD3DXCrackDecl1::BTexCoord
  1331. _TEXT    ENDS
  1332. PUBLIC    ?CWeights@CD3DXCrackDecl1@@QAEHXZ        ; CD3DXCrackDecl1::CWeights
  1333. ; Function compile flags: /Ogs
  1334. ;    COMDAT ?CWeights@CD3DXCrackDecl1@@QAEHXZ
  1335. _TEXT    SEGMENT
  1336. ?CWeights@CD3DXCrackDecl1@@QAEHXZ PROC NEAR        ; CD3DXCrackDecl1::CWeights, COMDAT
  1337. ; _this$ = ecx
  1338.  
  1339. ; 190  :     BOOL CWeights()                                  { return pWeightElement == NULL ? 0 : (pWeightElement->Type - D3DDECLTYPE_FLOAT1) + 1; }
  1340.  
  1341.   00000    8b 81 8c 00 00
  1342.     00         mov     eax, DWORD PTR [ecx+140]
  1343.   00006    85 c0         test     eax, eax
  1344.   00008    75 01         jne     SHORT $L56571
  1345.   0000a    c3         ret     0
  1346. $L56571:
  1347.   0000b    0f b6 40 04     movzx     eax, BYTE PTR [eax+4]
  1348.   0000f    40         inc     eax
  1349.   00010    c3         ret     0
  1350. ?CWeights@CD3DXCrackDecl1@@QAEHXZ ENDP            ; CD3DXCrackDecl1::CWeights
  1351. _TEXT    ENDS
  1352. PUBLIC    ?PvGetPosition@CD3DXCrackDecl1@@QAEPAUD3DXVECTOR3@@PAE@Z ; CD3DXCrackDecl1::PvGetPosition
  1353. ; Function compile flags: /Ogs
  1354. ;    COMDAT ?PvGetPosition@CD3DXCrackDecl1@@QAEPAUD3DXVECTOR3@@PAE@Z
  1355. _TEXT    SEGMENT
  1356. _pvPoint$ = 8                        ; size = 4
  1357. ?PvGetPosition@CD3DXCrackDecl1@@QAEPAUD3DXVECTOR3@@PAE@Z PROC NEAR ; CD3DXCrackDecl1::PvGetPosition, COMDAT
  1358. ; _this$ = ecx
  1359.  
  1360. ; 192  :     LPD3DXVECTOR3 PvGetPosition(PBYTE pvPoint)       { return (LPD3DXVECTOR3)(pvPoint + pPositionElement->Offset); }
  1361.  
  1362.   00000    8b ff         npad     2
  1363.   00002    55         push     ebp
  1364.   00003    8b ec         mov     ebp, esp
  1365.   00005    8b 81 88 00 00
  1366.     00         mov     eax, DWORD PTR [ecx+136]
  1367.   0000b    0f b7 40 02     movzx     eax, WORD PTR [eax+2]
  1368.   0000f    03 45 08     add     eax, DWORD PTR _pvPoint$[ebp]
  1369.   00012    5d         pop     ebp
  1370.   00013    c2 04 00     ret     4
  1371. ?PvGetPosition@CD3DXCrackDecl1@@QAEPAUD3DXVECTOR3@@PAE@Z ENDP ; CD3DXCrackDecl1::PvGetPosition
  1372. _TEXT    ENDS
  1373. PUBLIC    ?PvGetNormal@CD3DXCrackDecl1@@QAEPAUD3DXVECTOR3@@PAE@Z ; CD3DXCrackDecl1::PvGetNormal
  1374. ; Function compile flags: /Ogs
  1375. ;    COMDAT ?PvGetNormal@CD3DXCrackDecl1@@QAEPAUD3DXVECTOR3@@PAE@Z
  1376. _TEXT    SEGMENT
  1377. _pvPoint$ = 8                        ; size = 4
  1378. ?PvGetNormal@CD3DXCrackDecl1@@QAEPAUD3DXVECTOR3@@PAE@Z PROC NEAR ; CD3DXCrackDecl1::PvGetNormal, COMDAT
  1379. ; _this$ = ecx
  1380.  
  1381. ; 193  :     LPD3DXVECTOR3 PvGetNormal(PBYTE pvPoint)         { return (LPD3DXVECTOR3)(pvPoint + pNormalElement->Offset); }
  1382.  
  1383.   00000    8b ff         npad     2
  1384.   00002    55         push     ebp
  1385.   00003    8b ec         mov     ebp, esp
  1386.   00005    8b 81 94 00 00
  1387.     00         mov     eax, DWORD PTR [ecx+148]
  1388.   0000b    0f b7 40 02     movzx     eax, WORD PTR [eax+2]
  1389.   0000f    03 45 08     add     eax, DWORD PTR _pvPoint$[ebp]
  1390.   00012    5d         pop     ebp
  1391.   00013    c2 04 00     ret     4
  1392. ?PvGetNormal@CD3DXCrackDecl1@@QAEPAUD3DXVECTOR3@@PAE@Z ENDP ; CD3DXCrackDecl1::PvGetNormal
  1393. _TEXT    ENDS
  1394. PUBLIC    ?PdwGetIndices@CD3DXCrackDecl1@@QAEPAKPAE@Z    ; CD3DXCrackDecl1::PdwGetIndices
  1395. ; Function compile flags: /Ogs
  1396. ;    COMDAT ?PdwGetIndices@CD3DXCrackDecl1@@QAEPAKPAE@Z
  1397. _TEXT    SEGMENT
  1398. _pvPoint$ = 8                        ; size = 4
  1399. ?PdwGetIndices@CD3DXCrackDecl1@@QAEPAKPAE@Z PROC NEAR    ; CD3DXCrackDecl1::PdwGetIndices, COMDAT
  1400. ; _this$ = ecx
  1401.  
  1402. ; 195  :     LPDWORD PdwGetIndices(PBYTE pvPoint)             { return (LPDWORD)(pvPoint + pIndexElement->Offset); }
  1403.  
  1404.   00000    8b ff         npad     2
  1405.   00002    55         push     ebp
  1406.   00003    8b ec         mov     ebp, esp
  1407.   00005    8b 81 90 00 00
  1408.     00         mov     eax, DWORD PTR [ecx+144]
  1409.   0000b    0f b7 40 02     movzx     eax, WORD PTR [eax+2]
  1410.   0000f    03 45 08     add     eax, DWORD PTR _pvPoint$[ebp]
  1411.   00012    5d         pop     ebp
  1412.   00013    c2 04 00     ret     4
  1413. ?PdwGetIndices@CD3DXCrackDecl1@@QAEPAKPAE@Z ENDP    ; CD3DXCrackDecl1::PdwGetIndices
  1414. _TEXT    ENDS
  1415. PUBLIC    ?FGetWeight@CD3DXCrackDecl1@@QAEMPAEI@Z        ; CD3DXCrackDecl1::FGetWeight
  1416. ; Function compile flags: /Ogs
  1417. ;    COMDAT ?FGetWeight@CD3DXCrackDecl1@@QAEMPAEI@Z
  1418. _TEXT    SEGMENT
  1419. _pvPoint$ = 8                        ; size = 4
  1420. _iWeight$ = 12                        ; size = 4
  1421. ?FGetWeight@CD3DXCrackDecl1@@QAEMPAEI@Z PROC NEAR    ; CD3DXCrackDecl1::FGetWeight, COMDAT
  1422. ; _this$ = ecx
  1423.  
  1424. ; 196  :     FLOAT FGetWeight(PBYTE pvPoint, UINT iWeight)    { return ((FLOAT*)(pvPoint + pWeightElement->Offset))[iWeight]; }
  1425.  
  1426.   00000    8b ff         npad     2
  1427.   00002    55         push     ebp
  1428.   00003    8b ec         mov     ebp, esp
  1429.   00005    8b 81 8c 00 00
  1430.     00         mov     eax, DWORD PTR [ecx+140]
  1431.   0000b    0f b7 40 02     movzx     eax, WORD PTR [eax+2]
  1432.   0000f    03 45 08     add     eax, DWORD PTR _pvPoint$[ebp]
  1433.   00012    8b 4d 0c     mov     ecx, DWORD PTR _iWeight$[ebp]
  1434.   00015    d9 04 88     fld     DWORD PTR [eax+ecx*4]
  1435.   00018    5d         pop     ebp
  1436.   00019    c2 08 00     ret     8
  1437. ?FGetWeight@CD3DXCrackDecl1@@QAEMPAEI@Z ENDP        ; CD3DXCrackDecl1::FGetWeight
  1438. _TEXT    ENDS
  1439. PUBLIC    ??0CD3DXCrackDecl1@@QAE@XZ            ; CD3DXCrackDecl1::CD3DXCrackDecl1
  1440. EXTRN    ??0CD3DXCrackDecl@@QAE@XZ:NEAR            ; CD3DXCrackDecl::CD3DXCrackDecl
  1441. ; Function compile flags: /Ogs
  1442. ;    COMDAT ??0CD3DXCrackDecl1@@QAE@XZ
  1443. _TEXT    SEGMENT
  1444. ??0CD3DXCrackDecl1@@QAE@XZ PROC NEAR            ; CD3DXCrackDecl1::CD3DXCrackDecl1, COMDAT
  1445. ; _this$ = ecx
  1446.  
  1447. ; 254  :         }
  1448.  
  1449.   00000    8b ff         npad     2
  1450.   00002    56         push     esi
  1451.   00003    57         push     edi
  1452.  
  1453. ; 252  :         {
  1454.  
  1455.   00004    8b f1         mov     esi, ecx
  1456.   00006    e8 00 00 00 00     call     ??0CD3DXCrackDecl@@QAE@XZ ; CD3DXCrackDecl::CD3DXCrackDecl
  1457.   0000b    33 c0         xor     eax, eax
  1458.  
  1459. ; 253  :         memset(rgpTextureElements, 0, sizeof(LPD3DVERTEXELEMENT9) * 8);
  1460.  
  1461.   0000d    6a 08         push     8
  1462.   0000f    59         pop     ecx
  1463.   00010    89 86 88 00 00
  1464.     00         mov     DWORD PTR [esi+136], eax
  1465.   00016    89 86 8c 00 00
  1466.     00         mov     DWORD PTR [esi+140], eax
  1467.   0001c    89 86 90 00 00
  1468.     00         mov     DWORD PTR [esi+144], eax
  1469.   00022    89 86 94 00 00
  1470.     00         mov     DWORD PTR [esi+148], eax
  1471.   00028    89 86 98 00 00
  1472.     00         mov     DWORD PTR [esi+152], eax
  1473.   0002e    89 86 9c 00 00
  1474.     00         mov     DWORD PTR [esi+156], eax
  1475.   00034    8d be a0 00 00
  1476.     00         lea     edi, DWORD PTR [esi+160]
  1477.   0003a    f3 ab         rep stosd
  1478.   0003c    5f         pop     edi
  1479.  
  1480. ; 254  :         }
  1481.  
  1482.   0003d    8b c6         mov     eax, esi
  1483.   0003f    5e         pop     esi
  1484.   00040    c3         ret     0
  1485. ??0CD3DXCrackDecl1@@QAE@XZ ENDP                ; CD3DXCrackDecl1::CD3DXCrackDecl1
  1486. _TEXT    ENDS
  1487. PUBLIC    ?SetDeclaration@CD3DXCrackDecl1@@QAEJPBU_D3DVERTEXELEMENT9@@@Z ; CD3DXCrackDecl1::SetDeclaration
  1488. EXTRN    _D3DXGetDeclVertexSize@8:NEAR
  1489. EXTRN    ?SetDeclaration@CD3DXCrackDecl@@QAEJPBU_D3DVERTEXELEMENT9@@@Z:NEAR ; CD3DXCrackDecl::SetDeclaration
  1490. ; Function compile flags: /Ogs
  1491. ;    COMDAT ?SetDeclaration@CD3DXCrackDecl1@@QAEJPBU_D3DVERTEXELEMENT9@@@Z
  1492. _TEXT    SEGMENT
  1493. _pElementsNew$ = 8                    ; size = 4
  1494. ?SetDeclaration@CD3DXCrackDecl1@@QAEJPBU_D3DVERTEXELEMENT9@@@Z PROC NEAR ; CD3DXCrackDecl1::SetDeclaration, COMDAT
  1495. ; _this$ = ecx
  1496.  
  1497. ; 355  :     }
  1498.  
  1499.   00000    8b ff         npad     2
  1500.  
  1501. ; 270  :     {
  1502.  
  1503.   00002    55         push     ebp
  1504.   00003    8b ec         mov     ebp, esp
  1505.   00005    56         push     esi
  1506.  
  1507. ; 271  :         CONST D3DVERTEXELEMENT9 *pPlace;
  1508. ; 272  : 
  1509. ; 273  :         CD3DXCrackDecl::SetDeclaration(pElementsNew);
  1510.  
  1511.   00006    ff 75 08     push     DWORD PTR _pElementsNew$[ebp]
  1512.   00009    8b f1         mov     esi, ecx
  1513.   0000b    e8 00 00 00 00     call     ?SetDeclaration@CD3DXCrackDecl@@QAEJPBU_D3DVERTEXELEMENT9@@@Z ; CD3DXCrackDecl::SetDeclaration
  1514.  
  1515. ; 274  : 
  1516. ; 275  : #ifdef DEBUG
  1517. ; 276  :         // this class only works for single stream data types
  1518. ; 277  :         pPlace = pElementsNew;
  1519. ; 278  :         while(pPlace->Stream != 0xFF)
  1520. ; 279  :         {
  1521. ; 280  :             GXASSERT(pPlace->Stream == 0);
  1522. ; 281  :             pPlace++;
  1523. ; 282  :         }
  1524. ; 283  : #endif
  1525. ; 284  :         // should be pointing into local copy of declaration
  1526. ; 285  :         pPlace = pElements;
  1527.  
  1528.   00010    8b 06         mov     eax, DWORD PTR [esi]
  1529.   00012    e9 c9 00 00 00     jmp     $L56583
  1530. $L56021:
  1531.  
  1532. ; 288  :         {
  1533. ; 289  :             if (pPlace->UsageIndex == 0 || pPlace->Usage == D3DDECLUSAGE_TEXCOORD || 
  1534. ; 290  :                 pPlace->Usage == D3DDECLUSAGE_COLOR )
  1535.  
  1536.   00017    8a 50 07     mov     dl, BYTE PTR [eax+7]
  1537.   0001a    84 d2         test     dl, dl
  1538.   0001c    74 11         je     SHORT $L56024
  1539.   0001e    8a 48 06     mov     cl, BYTE PTR [eax+6]
  1540.   00021    80 f9 05     cmp     cl, 5
  1541.   00024    74 09         je     SHORT $L56024
  1542.   00026    80 f9 0a     cmp     cl, 10            ; 0000000aH
  1543.   00029    0f 85 ae 00 00
  1544.     00         jne     $L56030
  1545. $L56024:
  1546.  
  1547. ; 291  :             {
  1548. ; 292  :                 switch (pPlace->Usage)
  1549.  
  1550.   0002f    0f b6 48 06     movzx     ecx, BYTE PTR [eax+6]
  1551.   00033    83 e9 00     sub     ecx, 0
  1552.   00036    0f 84 95 00 00
  1553.     00         je     $L56029
  1554.   0003c    49         dec     ecx
  1555.   0003d    0f 84 80 00 00
  1556.     00         je     $L56031
  1557.   00043    49         dec     ecx
  1558.   00044    74 68         je     SHORT $L56033
  1559.   00046    49         dec     ecx
  1560.   00047    74 57         je     SHORT $L56036
  1561.   00049    49         dec     ecx
  1562.   0004a    49         dec     ecx
  1563.   0004b    74 3c         je     SHORT $L56046
  1564.   0004d    83 e9 05     sub     ecx, 5
  1565.   00050    0f 85 87 00 00
  1566.     00         jne     $L56030
  1567.  
  1568. ; 321  : 
  1569. ; 322  :                 case D3DDECLUSAGE_COLOR:
  1570. ; 323  :                     if (pPlace->UsageIndex == 0)
  1571.  
  1572.   00056    84 d2         test     dl, dl
  1573.   00058    75 15         jne     SHORT $L56039
  1574.  
  1575. ; 324  :                     {
  1576. ; 325  :                         if ((pPlace->Type == D3DDECLTYPE_FLOAT4) || (pPlace->Type == D3DDECLTYPE_D3DCOLOR))
  1577.  
  1578.   0005a    8a 48 04     mov     cl, BYTE PTR [eax+4]
  1579.   0005d    80 f9 03     cmp     cl, 3
  1580.   00060    74 05         je     SHORT $L56041
  1581.   00062    80 f9 04     cmp     cl, 4
  1582.   00065    75 76         jne     SHORT $L56030
  1583. $L56041:
  1584.  
  1585. ; 326  :                         {
  1586. ; 327  :                             pDiffuseElement = pPlace;
  1587.  
  1588.   00067    89 86 98 00 00
  1589.     00         mov     DWORD PTR [esi+152], eax
  1590.  
  1591. ; 328  :                         }
  1592. ; 329  :                     }
  1593. ; 330  :                     else
  1594.  
  1595.   0006d    eb 6e         jmp     SHORT $L56030
  1596. $L56039:
  1597.  
  1598. ; 331  :                     if (pPlace->UsageIndex == 1)
  1599.  
  1600.   0006f    80 fa 01     cmp     dl, 1
  1601.   00072    75 69         jne     SHORT $L56030
  1602.  
  1603. ; 332  :                     {
  1604. ; 333  :                         if ((pPlace->Type == D3DDECLTYPE_FLOAT4) || (pPlace->Type == D3DDECLTYPE_D3DCOLOR))
  1605.  
  1606.   00074    8a 48 04     mov     cl, BYTE PTR [eax+4]
  1607.   00077    80 f9 03     cmp     cl, 3
  1608.   0007a    74 05         je     SHORT $L56045
  1609.   0007c    80 f9 04     cmp     cl, 4
  1610.   0007f    75 5c         jne     SHORT $L56030
  1611. $L56045:
  1612.  
  1613. ; 334  :                         {
  1614. ; 335  :                             pSpecularElement = pPlace;
  1615.  
  1616.   00081    89 86 9c 00 00
  1617.     00         mov     DWORD PTR [esi+156], eax
  1618.  
  1619. ; 336  :                         }
  1620. ; 337  :                     }
  1621. ; 338  :                     break;
  1622.  
  1623.   00087    eb 54         jmp     SHORT $L56030
  1624. $L56046:
  1625.  
  1626. ; 339  : 
  1627. ; 340  :                 case D3DDECLUSAGE_TEXCOORD:
  1628. ; 341  :                     if ((pPlace->Type >= D3DDECLTYPE_FLOAT1) && (pPlace->Type <= D3DDECLTYPE_FLOAT4) && (pPlace->UsageIndex < 8))
  1629.  
  1630.   00089    80 78 04 03     cmp     BYTE PTR [eax+4], 3
  1631.   0008d    77 4e         ja     SHORT $L56030
  1632.   0008f    80 fa 08     cmp     dl, 8
  1633.   00092    73 49         jae     SHORT $L56030
  1634.  
  1635. ; 342  :                     {
  1636. ; 343  :                         rgpTextureElements[pPlace->UsageIndex] = pPlace;
  1637.  
  1638.   00094    0f b6 ca     movzx     ecx, dl
  1639.   00097    89 84 8e a0 00
  1640.     00 00         mov     DWORD PTR [esi+ecx*4+160], eax
  1641.  
  1642. ; 344  :                     }
  1643. ; 345  :                     break;
  1644.  
  1645.   0009e    eb 3d         jmp     SHORT $L56030
  1646. $L56036:
  1647.  
  1648. ; 314  : 
  1649. ; 315  :                 case D3DDECLUSAGE_NORMAL:
  1650. ; 316  :                     if (pPlace->Type == D3DDECLTYPE_FLOAT3)
  1651.  
  1652.   000a0    80 78 04 02     cmp     BYTE PTR [eax+4], 2
  1653.   000a4    75 37         jne     SHORT $L56030
  1654.  
  1655. ; 317  :                     {
  1656. ; 318  :                         pNormalElement = pPlace;
  1657.  
  1658.   000a6    89 86 94 00 00
  1659.     00         mov     DWORD PTR [esi+148], eax
  1660.  
  1661. ; 319  :                     }
  1662. ; 320  :                     break;
  1663.  
  1664.   000ac    eb 2f         jmp     SHORT $L56030
  1665. $L56033:
  1666.  
  1667. ; 307  : 
  1668. ; 308  :                 case D3DDECLUSAGE_BLENDINDICES:
  1669. ; 309  :                     if ((pPlace->Type == D3DDECLTYPE_UBYTE4) || (pPlace->Type == D3DDECLTYPE_D3DCOLOR))
  1670.  
  1671.   000ae    8a 48 04     mov     cl, BYTE PTR [eax+4]
  1672.   000b1    80 f9 05     cmp     cl, 5
  1673.   000b4    74 05         je     SHORT $L56035
  1674.   000b6    80 f9 04     cmp     cl, 4
  1675.   000b9    75 22         jne     SHORT $L56030
  1676. $L56035:
  1677.  
  1678. ; 310  :                     {
  1679. ; 311  :                         pIndexElement = pPlace;
  1680.  
  1681.   000bb    89 86 90 00 00
  1682.     00         mov     DWORD PTR [esi+144], eax
  1683.  
  1684. ; 312  :                     }
  1685. ; 313  :                     break;
  1686.  
  1687.   000c1    eb 1a         jmp     SHORT $L56030
  1688. $L56031:
  1689.  
  1690. ; 298  :                     }
  1691. ; 299  :                     break;
  1692. ; 300  : 
  1693. ; 301  :                 case D3DDECLUSAGE_BLENDWEIGHT:
  1694. ; 302  :                     if ((pPlace->Type >= D3DDECLTYPE_FLOAT1) && (pPlace->Type <= D3DDECLTYPE_FLOAT4))
  1695.  
  1696.   000c3    80 78 04 03     cmp     BYTE PTR [eax+4], 3
  1697.   000c7    77 14         ja     SHORT $L56030
  1698.  
  1699. ; 303  :                     {
  1700. ; 304  :                         pWeightElement = pPlace;
  1701.  
  1702.   000c9    89 86 8c 00 00
  1703.     00         mov     DWORD PTR [esi+140], eax
  1704.  
  1705. ; 305  :                     }
  1706. ; 306  :                     break;
  1707.  
  1708.   000cf    eb 0c         jmp     SHORT $L56030
  1709. $L56029:
  1710.  
  1711. ; 293  :                 {
  1712. ; 294  :                 case D3DDECLUSAGE_POSITION:
  1713. ; 295  :                     if (pPlace->Type == D3DDECLTYPE_FLOAT3)
  1714.  
  1715.   000d1    80 78 04 02     cmp     BYTE PTR [eax+4], 2
  1716.   000d5    75 06         jne     SHORT $L56030
  1717.  
  1718. ; 296  :                     {
  1719. ; 297  :                         pPositionElement = pPlace;
  1720.  
  1721.   000d7    89 86 88 00 00
  1722.     00         mov     DWORD PTR [esi+136], eax
  1723. $L56030:
  1724.  
  1725. ; 346  :                 }
  1726. ; 347  :             }
  1727. ; 348  : 
  1728. ; 349  :             pPlace++;
  1729.  
  1730.   000dd    83 c0 08     add     eax, 8
  1731. $L56583:
  1732.  
  1733. ; 286  : 
  1734. ; 287  :         while(pPlace->Stream != 0xFF)
  1735.  
  1736.   000e0    66 81 38 ff 00     cmp     WORD PTR [eax], 255    ; 000000ffH
  1737.   000e5    0f 85 2c ff ff
  1738.     ff         jne     $L56021
  1739.  
  1740. ; 350  :         }
  1741. ; 351  : 
  1742. ; 352  :         m_cBytesPerVertex = D3DXGetDeclVertexSize(pElements,0);
  1743.  
  1744.   000eb    6a 00         push     0
  1745.   000ed    ff 36         push     DWORD PTR [esi]
  1746.   000ef    e8 00 00 00 00     call     _D3DXGetDeclVertexSize@8
  1747.   000f4    89 86 c0 00 00
  1748.     00         mov     DWORD PTR [esi+192], eax
  1749.  
  1750. ; 353  : 
  1751. ; 354  :         return S_OK;
  1752.  
  1753.   000fa    33 c0         xor     eax, eax
  1754.   000fc    5e         pop     esi
  1755.  
  1756. ; 355  :     }
  1757.  
  1758.   000fd    5d         pop     ebp
  1759.   000fe    c2 04 00     ret     4
  1760. ?SetDeclaration@CD3DXCrackDecl1@@QAEJPBU_D3DVERTEXELEMENT9@@@Z ENDP ; CD3DXCrackDecl1::SetDeclaration
  1761. _TEXT    ENDS
  1762. PUBLIC    ?Init@CShowNormals@@QAEJPAUID3DXBaseMesh@@KM@Z    ; CShowNormals::Init
  1763. EXTRN    ??2@YAPAXI@Z:NEAR                ; operator new
  1764. EXTRN    _D3DXVec3Normalize@8:NEAR
  1765. ; Function compile flags: /Ogs
  1766. ; File d:\builds\nt32_fre\multimedia\directx\dxsdk\src\mview\gxu\shownormal.cpp
  1767. ;    COMDAT ?Init@CShowNormals@@QAEJPAUID3DXBaseMesh@@KM@Z
  1768. _TEXT    SEGMENT
  1769. _pDecl$ = -1212                        ; size = 520
  1770. _Caps$ = -692                        ; size = 304
  1771. $T56586 = -388                        ; size = 64
  1772. _cdSrc$ = -324                        ; size = 196
  1773. _cfvfDest$ = -128                    ; size = 64
  1774. _vZero$ = -64                        ; size = 12
  1775. $T56697 = -52                        ; size = 4
  1776. _cbSizeOfVector$ = -48                    ; size = 4
  1777. _vPos$ = -44                        ; size = 12
  1778. $T56691 = -32                        ; size = 4
  1779. $T56662 = -32                        ; size = 4
  1780. $T56656 = -32                        ; size = 4
  1781. _vNormal$ = -28                        ; size = 12
  1782. _hr$ = -16                        ; size = 4
  1783. tv204 = -12                        ; size = 4
  1784. tv172 = -12                        ; size = 4
  1785. tv160 = -12                        ; size = 4
  1786. _cVertices$ = -12                    ; size = 4
  1787. _pbSrc$ = -8                        ; size = 4
  1788. _pbDest$ = -4                        ; size = 4
  1789. _ptmMesh$ = 8                        ; size = 4
  1790. _dwTexStage$ = 12                    ; size = 4
  1791. tv363 = 16                        ; size = 4
  1792. $T56674 = 16                        ; size = 4
  1793. $T56668 = 16                        ; size = 4
  1794. _cWeights$ = 16                        ; size = 4
  1795. _fLength$ = 16                        ; size = 4
  1796. ?Init@CShowNormals@@QAEJPAUID3DXBaseMesh@@KM@Z PROC NEAR ; CShowNormals::Init, COMDAT
  1797. ; _this$ = ecx
  1798.  
  1799. ; 284  : }
  1800.  
  1801.   00000    8b ff         npad     2
  1802.  
  1803. ; 58   : {
  1804.  
  1805.   00002    55         push     ebp
  1806.   00003    8b ec         mov     ebp, esp
  1807.   00005    81 ec bc 04 00
  1808.     00         sub     esp, 1212        ; 000004bcH
  1809.   0000b    53         push     ebx
  1810.   0000c    56         push     esi
  1811.   0000d    57         push     edi
  1812.   0000e    8b d9         mov     ebx, ecx
  1813.  
  1814. ; 59   :     HRESULT hr = S_OK;
  1815. ; 60   :     PBYTE pbSrc = NULL;
  1816.  
  1817.   00010    33 ff         xor     edi, edi
  1818.  
  1819. ; 61   :     PBYTE pbDest = NULL;
  1820. ; 62   :     DWORD iVertex;
  1821. ; 63   :     DWORD cVertices;
  1822. ; 64   :     DXCrackFVF cfvfDest(D3DFVF_XYZ);
  1823.  
  1824.   00012    6a 02         push     2
  1825.   00014    8d 4d 80     lea     ecx, DWORD PTR _cfvfDest$[ebp]
  1826.   00017    89 7d f8     mov     DWORD PTR _pbSrc$[ebp], edi
  1827.   0001a    89 7d fc     mov     DWORD PTR _pbDest$[ebp], edi
  1828.   0001d    e8 00 00 00 00     call     ??0DXCrackFVF@@QAE@K@Z    ; DXCrackFVF::DXCrackFVF
  1829.  
  1830. ; 65   :     CD3DXCrackDecl1 cdSrc;
  1831.  
  1832.   00022    8d 8d bc fe ff
  1833.     ff         lea     ecx, DWORD PTR _cdSrc$[ebp]
  1834.   00028    e8 00 00 00 00     call     ??0CD3DXCrackDecl1@@QAE@XZ ; CD3DXCrackDecl1::CD3DXCrackDecl1
  1835.  
  1836. ; 66   :     D3DXVECTOR3 vPos;
  1837. ; 67   :     D3DXVECTOR3 vNormal;
  1838. ; 68   :     D3DXVECTOR3 vZero(0.0f, 0.0f, 0.0f);
  1839.  
  1840.   0002d    d9 ee         fldz
  1841.  
  1842. ; 69   :     float fSum;
  1843. ; 70   :     float fWeight;
  1844. ; 71   :     DWORD iWeight;
  1845. ; 72   :     D3DCAPS9 Caps;
  1846. ; 73   :     DWORD cbSizeOfVector;
  1847. ; 74   :     DWORD cWeights;
  1848. ; 75   :     D3DVERTEXELEMENT9 pDecl[MAX_FVF_DECL_SIZE];
  1849. ; 76   :     UINT iAttrib;
  1850. ; 77   : 
  1851. ; 78   :     m_fScale = fLength;
  1852.  
  1853.   0002f    8b 45 10     mov     eax, DWORD PTR _fLength$[ebp]
  1854.   00032    d9 5d c0     fstp     DWORD PTR _vZero$[ebp]
  1855.   00035    d9 ee         fldz
  1856.  
  1857. ; 79   : 
  1858. ; 80   :     hr = CreateEmptyOutline();
  1859.  
  1860.   00037    8b cb         mov     ecx, ebx
  1861.   00039    d9 5d c4     fstp     DWORD PTR _vZero$[ebp+4]
  1862.   0003c    89 43 18     mov     DWORD PTR [ebx+24], eax
  1863.   0003f    d9 ee         fldz
  1864.   00041    d9 5d c8     fstp     DWORD PTR _vZero$[ebp+8]
  1865.   00044    e8 00 00 00 00     call     ?CreateEmptyOutline@CShowNormals@@AAEJXZ ; CShowNormals::CreateEmptyOutline
  1866.  
  1867. ; 81   :     if (FAILED(hr))
  1868.  
  1869.   00049    3b c7         cmp     eax, edi
  1870.  
  1871. ; 82   :         goto e_Exit;
  1872. ; 83   : 
  1873. ; 84   :     if (ptmMesh == NULL)
  1874.  
  1875.   0004b    8b 75 08     mov     esi, DWORD PTR _ptmMesh$[ebp]
  1876.   0004e    89 45 f0     mov     DWORD PTR _hr$[ebp], eax
  1877.   00051    0f 8c b6 04 00
  1878.     00         jl     $e_Exit$56285
  1879.   00057    3b f7         cmp     esi, edi
  1880.   00059    0f 84 ae 04 00
  1881.     00         je     $e_Exit$56285
  1882.  
  1883. ; 85   :         goto e_Exit;
  1884. ; 86   : 
  1885. ; 87   :     cVertices = ptmMesh->GetNumVertices();
  1886.  
  1887.   0005f    8b 06         mov     eax, DWORD PTR [esi]
  1888.   00061    56         push     esi
  1889.   00062    ff 50 14     call     DWORD PTR [eax+20]
  1890.  
  1891. ; 88   : 
  1892. ; 89   :     ptmMesh->GetDeclaration(pDecl);
  1893.  
  1894.   00065    8b 06         mov     eax, DWORD PTR [esi]
  1895.   00067    8d 8d 44 fb ff
  1896.     ff         lea     ecx, DWORD PTR _pDecl$[ebp]
  1897.   0006d    51         push     ecx
  1898.   0006e    56         push     esi
  1899.   0006f    ff 50 1c     call     DWORD PTR [eax+28]
  1900.  
  1901. ; 90   :     cdSrc.SetDeclaration(pDecl);;
  1902.  
  1903.   00072    8d 85 44 fb ff
  1904.     ff         lea     eax, DWORD PTR _pDecl$[ebp]
  1905.   00078    50         push     eax
  1906.   00079    8d 8d bc fe ff
  1907.     ff         lea     ecx, DWORD PTR _cdSrc$[ebp]
  1908.   0007f    e8 00 00 00 00     call     ?SetDeclaration@CD3DXCrackDecl1@@QAEJPBU_D3DVERTEXELEMENT9@@@Z ; CD3DXCrackDecl1::SetDeclaration
  1909.  
  1910. ; 91   : 
  1911. ; 92   :     // if the texture stage is 
  1912. ; 93   :     if ((dwTexStage != UNUSED32) && !cdSrc.BTexCoord(dwTexStage))
  1913.  
  1914.   00084    8b 45 0c     mov     eax, DWORD PTR _dwTexStage$[ebp]
  1915.   00087    83 f8 ff     cmp     eax, -1
  1916.   0008a    74 1f         je     SHORT $L56746
  1917.   0008c    8b 84 85 5c ff
  1918.     ff ff         mov     eax, DWORD PTR _cdSrc$[ebp+eax*4+160]
  1919.   00093    3b c7         cmp     eax, edi
  1920.   00095    0f 84 72 04 00
  1921.     00         je     $e_Exit$56285
  1922.  
  1923. ; 94   :         goto e_Exit;
  1924. ; 95   : 
  1925. ; 96   :     if (dwTexStage != UNUSED32)
  1926. ; 97   :         cbSizeOfVector = x_rgcbTypeSizes[cdSrc.rgpTextureElements[dwTexStage]->Type];
  1927.  
  1928.   0009b    0f b6 40 04     movzx     eax, BYTE PTR [eax+4]
  1929.   0009f    0f b6 80 00 00
  1930.     00 00         movzx     eax, BYTE PTR _x_rgcbTypeSizes[eax]
  1931.   000a6    89 45 d0     mov     DWORD PTR _cbSizeOfVector$[ebp], eax
  1932.  
  1933. ; 98   : 
  1934. ; 99   :     if ((dwTexStage == UNUSED32) && !cdSrc.BNormal())
  1935.  
  1936.   000a9    eb 0c         jmp     SHORT $L56292
  1937. $L56746:
  1938.   000ab    39 bd 50 ff ff
  1939.     ff         cmp     DWORD PTR _cdSrc$[ebp+148], edi
  1940.   000b1    0f 84 56 04 00
  1941.     00         je     $e_Exit$56285
  1942. $L56292:
  1943.  
  1944. ; 100  :         goto e_Exit;
  1945. ; 101  : 
  1946. ; 102  :     ptmMesh->GetDevice(&m_pDevice);
  1947.  
  1948.   000b7    8b 06         mov     eax, DWORD PTR [esi]
  1949.   000b9    53         push     ebx
  1950.   000ba    56         push     esi
  1951.   000bb    ff 50 28     call     DWORD PTR [eax+40]
  1952.  
  1953. ; 103  : 
  1954. ; 104  :     m_pDevice->GetDeviceCaps(&Caps);
  1955.  
  1956.   000be    8b 03         mov     eax, DWORD PTR [ebx]
  1957.   000c0    8b 08         mov     ecx, DWORD PTR [eax]
  1958.   000c2    8d 95 4c fd ff
  1959.     ff         lea     edx, DWORD PTR _Caps$[ebp]
  1960.   000c8    52         push     edx
  1961.   000c9    50         push     eax
  1962.   000ca    ff 51 1c     call     DWORD PTR [ecx+28]
  1963.  
  1964. ; 105  :     m_bHWVertexShaders = Caps.VertexShaderVersion >= D3DVS_VERSION(1,1);
  1965.  
  1966.   000cd    81 bd 10 fe ff
  1967.     ff 01 01 fe ff     cmp     DWORD PTR _Caps$[ebp+196], -130815 ; fffe0101H
  1968.  
  1969. ; 106  : 
  1970. ; 107  :     hr = ptmMesh->GetAttributeTable(NULL, &m_caeAttributeTable);
  1971.  
  1972.   000d7    8d 7b 20     lea     edi, DWORD PTR [ebx+32]
  1973.   000da    1b c0         sbb     eax, eax
  1974.   000dc    57         push     edi
  1975.   000dd    40         inc     eax
  1976.   000de    6a 00         push     0
  1977.   000e0    89 43 14     mov     DWORD PTR [ebx+20], eax
  1978.   000e3    8b 06         mov     eax, DWORD PTR [esi]
  1979.   000e5    56         push     esi
  1980.   000e6    ff 50 4c     call     DWORD PTR [eax+76]
  1981.  
  1982. ; 108  :     if (FAILED(hr))
  1983.  
  1984.   000e9    85 c0         test     eax, eax
  1985.   000eb    89 45 f0     mov     DWORD PTR _hr$[ebp], eax
  1986.   000ee    0f 8c 19 04 00
  1987.     00         jl     $e_Exit$56285
  1988.  
  1989. ; 109  :         goto e_Exit;
  1990. ; 110  : 
  1991. ; 111  :     if (m_caeAttributeTable == 0)
  1992.  
  1993.   000f4    8b 07         mov     eax, DWORD PTR [edi]
  1994.   000f6    85 c0         test     eax, eax
  1995.   000f8    0f 84 0f 04 00
  1996.     00         je     $e_Exit$56285
  1997.  
  1998. ; 112  :     {
  1999. ; 113  :         // not attribute sorted!  just return for now
  2000. ; 114  :         goto e_Exit;
  2001. ; 115  :     }
  2002. ; 116  : 
  2003. ; 117  :     m_rgaeAttributeTable = new D3DXATTRIBUTERANGE[m_caeAttributeTable];
  2004.  
  2005.   000fe    8d 04 80     lea     eax, DWORD PTR [eax+eax*4]
  2006.   00101    c1 e0 02     shl     eax, 2
  2007.   00104    50         push     eax
  2008.   00105    e8 00 00 00 00     call     ??2@YAPAXI@Z        ; operator new
  2009.   0010a    59         pop     ecx
  2010.  
  2011. ; 118  :     if (m_rgaeAttributeTable == NULL)
  2012.  
  2013.   0010b    33 c9         xor     ecx, ecx
  2014.   0010d    3b c1         cmp     eax, ecx
  2015.   0010f    89 45 f4     mov     DWORD PTR tv160[ebp], eax
  2016.   00112    89 43 1c     mov     DWORD PTR [ebx+28], eax
  2017.   00115    75 0c         jne     SHORT $L56301
  2018.  
  2019. ; 119  :     {
  2020. ; 120  :         hr = E_OUTOFMEMORY;
  2021.  
  2022.   00117    c7 45 f0 0e 00
  2023.     07 80         mov     DWORD PTR _hr$[ebp], -2147024882 ; 8007000eH
  2024.  
  2025. ; 272  :         }
  2026.  
  2027.   0011e    e9 ea 03 00 00     jmp     $e_Exit$56285
  2028. $L56301:
  2029.  
  2030. ; 121  :         goto e_Exit;
  2031. ; 122  :     }
  2032. ; 123  : 
  2033. ; 124  :     if ((cdSrc.CWeights() > 0) && !cdSrc.BIndexedWeights())
  2034.  
  2035.   00123    8b 85 48 ff ff
  2036.     ff         mov     eax, DWORD PTR _cdSrc$[ebp+140]
  2037.   00129    3b c1         cmp     eax, ecx
  2038.   0012b    74 4b         je     SHORT $L56307
  2039.   0012d    0f b6 40 04     movzx     eax, BYTE PTR [eax+4]
  2040.   00131    40         inc     eax
  2041.   00132    3b c1         cmp     eax, ecx
  2042.   00134    7e 42         jle     SHORT $L56307
  2043.   00136    39 8d 4c ff ff
  2044.     ff         cmp     DWORD PTR _cdSrc$[ebp+144], ecx
  2045.   0013c    75 26         jne     SHORT $L56623
  2046.  
  2047. ; 125  :     {
  2048. ; 126  :         m_bSkinning = TRUE;
  2049.  
  2050.   0013e    c7 43 0c 01 00
  2051.     00 00         mov     DWORD PTR [ebx+12], 1
  2052.  
  2053. ; 127  :         m_bIndexedSkinning = FALSE;
  2054.  
  2055.   00145    89 4b 10     mov     DWORD PTR [ebx+16], ecx
  2056.  
  2057. ; 128  :         cfvfDest = DXCrackFVF(SKINNEDFVF);
  2058.  
  2059.   00148    6a 1c         push     28            ; 0000001cH
  2060. $L56759:
  2061.   0014a    8d 8d 7c fe ff
  2062.     ff         lea     ecx, DWORD PTR $T56586[ebp]
  2063.   00150    e8 00 00 00 00     call     ??0DXCrackFVF@@QAE@K@Z    ; DXCrackFVF::DXCrackFVF
  2064.   00155    6a 10         push     16            ; 00000010H
  2065.   00157    59         pop     ecx
  2066.   00158    8b f0         mov     esi, eax
  2067.   0015a    8d 7d 80     lea     edi, DWORD PTR _cfvfDest$[ebp]
  2068.   0015d    f3 a5         rep movsd
  2069.  
  2070. ; 129  :     }
  2071. ; 130  :     else if (cdSrc.CWeights() > 0)
  2072.  
  2073.   0015f    8b 75 08     mov     esi, DWORD PTR _ptmMesh$[ebp]
  2074.   00162    eb 17         jmp     SHORT $L56309
  2075. $L56623:
  2076.   00164    3b c1         cmp     eax, ecx
  2077.   00166    7e 10         jle     SHORT $L56307
  2078.  
  2079. ; 131  :     {
  2080. ; 132  :         m_bSkinning = TRUE;
  2081.  
  2082.   00168    33 c0         xor     eax, eax
  2083.   0016a    40         inc     eax
  2084.   0016b    89 43 0c     mov     DWORD PTR [ebx+12], eax
  2085.  
  2086. ; 133  :         m_bIndexedSkinning = TRUE;
  2087.  
  2088.   0016e    89 43 10     mov     DWORD PTR [ebx+16], eax
  2089.  
  2090. ; 134  :         cfvfDest = DXCrackFVF(INDEXSKINNEDFVF);
  2091.  
  2092.   00171    68 1e 80 00 00     push     32798            ; 0000801eH
  2093.  
  2094. ; 135  :     }
  2095. ; 136  :     else
  2096.  
  2097.   00176    eb d2         jmp     SHORT $L56759
  2098. $L56307:
  2099.  
  2100. ; 137  :     {
  2101. ; 138  :         m_bSkinning = FALSE;
  2102.  
  2103.   00178    89 4b 0c     mov     DWORD PTR [ebx+12], ecx
  2104. $L56309:
  2105.  
  2106. ; 139  :     }
  2107. ; 140  : 
  2108. ; 141  :     hr = ptmMesh->GetAttributeTable(m_rgaeAttributeTable, NULL);
  2109.  
  2110.   0017b    8b 06         mov     eax, DWORD PTR [esi]
  2111.   0017d    6a 00         push     0
  2112.   0017f    ff 75 f4     push     DWORD PTR tv160[ebp]
  2113.   00182    56         push     esi
  2114.   00183    ff 50 4c     call     DWORD PTR [eax+76]
  2115.  
  2116. ; 142  :     if (FAILED(hr))
  2117.  
  2118.   00186    85 c0         test     eax, eax
  2119.   00188    89 45 f0     mov     DWORD PTR _hr$[ebp], eax
  2120.   0018b    0f 8c 7c 03 00
  2121.     00         jl     $e_Exit$56285
  2122.  
  2123. ; 143  :         goto e_Exit;
  2124. ; 144  : 
  2125. ; 145  :     cVertices = 0;
  2126.  
  2127.   00191    83 65 f4 00     and     DWORD PTR _cVertices$[ebp], 0
  2128.  
  2129. ; 146  :     for (iAttrib = 0; iAttrib < m_caeAttributeTable; iAttrib++)
  2130.  
  2131.   00195    83 7b 20 00     cmp     DWORD PTR [ebx+32], 0
  2132.   00199    76 1e         jbe     SHORT $L56315
  2133.   0019b    8b 43 1c     mov     eax, DWORD PTR [ebx+28]
  2134.   0019e    8b 53 20     mov     edx, DWORD PTR [ebx+32]
  2135.   001a1    83 c0 0c     add     eax, 12            ; 0000000cH
  2136. $L56313:
  2137.  
  2138. ; 147  :     {
  2139. ; 148  :         cVertices = max(cVertices, m_rgaeAttributeTable[iAttrib].VertexStart + m_rgaeAttributeTable[iAttrib].VertexCount);
  2140.  
  2141.   001a4    8b 48 04     mov     ecx, DWORD PTR [eax+4]
  2142.   001a7    8b 38         mov     edi, DWORD PTR [eax]
  2143.   001a9    03 cf         add     ecx, edi
  2144.   001ab    39 4d f4     cmp     DWORD PTR _cVertices$[ebp], ecx
  2145.   001ae    77 03         ja     SHORT $L56589
  2146.   001b0    89 4d f4     mov     DWORD PTR _cVertices$[ebp], ecx
  2147. $L56589:
  2148.  
  2149. ; 146  :     for (iAttrib = 0; iAttrib < m_caeAttributeTable; iAttrib++)
  2150.  
  2151.   001b3    83 c0 14     add     eax, 20            ; 00000014H
  2152.   001b6    4a         dec     edx
  2153.   001b7    75 eb         jne     SHORT $L56313
  2154. $L56315:
  2155.  
  2156. ; 149  :     }
  2157. ; 150  :     // get the maximum vertex index
  2158. ; 151  : 
  2159. ; 152  :     hr = m_pDevice->CreateVertexBuffer(cVertices * 2 * cfvfDest.m_cBytesPerVertex, 
  2160. ; 153  :                     D3DUSAGE_WRITEONLY|(m_bHWVertexShaders ? 0:D3DUSAGE_SOFTWAREPROCESSING), 
  2161. ; 154  :                     cfvfDest.m_dwFVF, D3DPOOL_MANAGED, &m_pVertexBuffer, NULL);
  2162.  
  2163.   001b9    8b 53 14     mov     edx, DWORD PTR [ebx+20]
  2164.   001bc    8b 03         mov     eax, DWORD PTR [ebx]
  2165.   001be    f7 da         neg     edx
  2166.   001c0    6a 00         push     0
  2167.   001c2    8b 08         mov     ecx, DWORD PTR [eax]
  2168.   001c4    1b d2         sbb     edx, edx
  2169.   001c6    83 e2 f0     and     edx, -16        ; fffffff0H
  2170.   001c9    8d 7b 04     lea     edi, DWORD PTR [ebx+4]
  2171.   001cc    57         push     edi
  2172.   001cd    6a 01         push     1
  2173.   001cf    ff 75 80     push     DWORD PTR _cfvfDest$[ebp]
  2174.   001d2    83 c2 10     add     edx, 16            ; 00000010H
  2175.   001d5    83 ca 08     or     edx, 8
  2176.   001d8    52         push     edx
  2177.   001d9    8b 55 84     mov     edx, DWORD PTR _cfvfDest$[ebp+4]
  2178.   001dc    0f af 55 f4     imul     edx, DWORD PTR _cVertices$[ebp]
  2179.   001e0    d1 e2         shl     edx, 1
  2180.   001e2    52         push     edx
  2181.   001e3    50         push     eax
  2182.   001e4    ff 51 68     call     DWORD PTR [ecx+104]
  2183.  
  2184. ; 155  : 
  2185. ; 156  :     hr = ptmMesh->LockVertexBuffer(D3DLOCK_READONLY, (PVOID*)&pbSrc);
  2186.  
  2187.   001e7    8b 06         mov     eax, DWORD PTR [esi]
  2188.   001e9    8d 4d f8     lea     ecx, DWORD PTR _pbSrc$[ebp]
  2189.   001ec    51         push     ecx
  2190.   001ed    6a 10         push     16            ; 00000010H
  2191.   001ef    56         push     esi
  2192.   001f0    ff 50 3c     call     DWORD PTR [eax+60]
  2193.  
  2194. ; 157  :     if (FAILED(hr))
  2195.  
  2196.   001f3    85 c0         test     eax, eax
  2197.   001f5    7d 0f         jge     SHORT $L56318
  2198.  
  2199. ; 158  :     {
  2200. ; 159  :         hr = CreateEmptyOutline();
  2201.  
  2202.   001f7    8b cb         mov     ecx, ebx
  2203.   001f9    e8 00 00 00 00     call     ?CreateEmptyOutline@CShowNormals@@AAEJXZ ; CShowNormals::CreateEmptyOutline
  2204.   001fe    89 45 f0     mov     DWORD PTR _hr$[ebp], eax
  2205.  
  2206. ; 272  :         }
  2207.  
  2208.   00201    e9 07 03 00 00     jmp     $e_Exit$56285
  2209. $L56318:
  2210.  
  2211. ; 160  :         goto e_Exit;   
  2212. ; 161  :     }
  2213. ; 162  : 
  2214. ; 163  :     hr = m_pVertexBuffer->Lock(0, 0, (PVOID*)&pbDest, D3DLOCK_NOSYSLOCK);
  2215.  
  2216.   00206    8b 3f         mov     edi, DWORD PTR [edi]
  2217.   00208    8b 07         mov     eax, DWORD PTR [edi]
  2218.   0020a    68 00 08 00 00     push     2048            ; 00000800H
  2219.   0020f    8d 4d fc     lea     ecx, DWORD PTR _pbDest$[ebp]
  2220.   00212    51         push     ecx
  2221.   00213    6a 00         push     0
  2222.   00215    6a 00         push     0
  2223.   00217    57         push     edi
  2224.   00218    ff 50 2c     call     DWORD PTR [eax+44]
  2225.  
  2226. ; 164  :     if (FAILED(hr))
  2227.  
  2228.   0021b    85 c0         test     eax, eax
  2229.   0021d    89 45 f0     mov     DWORD PTR _hr$[ebp], eax
  2230.   00220    0f 8c e7 02 00
  2231.     00         jl     $e_Exit$56285
  2232.  
  2233. ; 165  :         goto e_Exit;   
  2234. ; 166  : 
  2235. ; 167  :     if (m_bSkinning)
  2236.  
  2237.   00226    83 7b 0c 00     cmp     DWORD PTR [ebx+12], 0
  2238.  
  2239. ; 168  :     {
  2240. ; 169  :         // first figure out the counts for the number of creases per attribute group
  2241. ; 170  :         for (iVertex = 0; iVertex < cVertices; iVertex++)
  2242.  
  2243.   0022a    8b 45 f4     mov     eax, DWORD PTR _cVertices$[ebp]
  2244.   0022d    0f 84 08 02 00
  2245.     00         je     $L56324
  2246.   00233    85 c0         test     eax, eax
  2247.   00235    0f 86 d2 02 00
  2248.     00         jbe     $e_Exit$56285
  2249.   0023b    89 45 f4     mov     DWORD PTR tv204[ebp], eax
  2250. $L56325:
  2251.  
  2252. ; 171  :         {
  2253. ; 172  :             vPos = *cdSrc.PvGetPosition(pbSrc);
  2254.  
  2255.   0023e    8b 85 44 ff ff
  2256.     ff         mov     eax, DWORD PTR _cdSrc$[ebp+136]
  2257.   00244    0f b7 70 02     movzx     esi, WORD PTR [eax+2]
  2258.   00248    03 75 f8     add     esi, DWORD PTR _pbSrc$[ebp]
  2259.  
  2260. ; 173  : 
  2261. ; 174  :             // if use the normal, easy
  2262. ; 175  :             if (dwTexStage == UNUSED32)
  2263.  
  2264.   0024b    8b 55 0c     mov     edx, DWORD PTR _dwTexStage$[ebp]
  2265.   0024e    83 fa ff     cmp     edx, -1
  2266.   00251    8d 7d d4     lea     edi, DWORD PTR _vPos$[ebp]
  2267.   00254    a5         movsd
  2268.   00255    a5         movsd
  2269.   00256    a5         movsd
  2270.  
  2271. ; 176  :             {
  2272. ; 177  :                 vNormal = *cdSrc.PvGetNormal(pbSrc);
  2273.  
  2274.   00257    8d 7d e4     lea     edi, DWORD PTR _vNormal$[ebp]
  2275.   0025a    75 12         jne     SHORT $L56328
  2276.   0025c    8b 85 50 ff ff
  2277.     ff         mov     eax, DWORD PTR _cdSrc$[ebp+148]
  2278.   00262    0f b7 70 02     movzx     esi, WORD PTR [eax+2]
  2279.   00266    03 75 f8     add     esi, DWORD PTR _pbSrc$[ebp]
  2280.   00269    a5         movsd
  2281.   0026a    a5         movsd
  2282.   0026b    a5         movsd
  2283.  
  2284. ; 178  :             }
  2285. ; 179  :             else  // else grab a texture coordinate as a vector
  2286.  
  2287.   0026c    eb 27         jmp     SHORT $L56329
  2288. $L56328:
  2289.  
  2290. ; 180  :             {
  2291. ; 181  :                 // set all parts of the vector to zero
  2292. ; 182  :                 memset(&vNormal, 0, sizeof(D3DXVECTOR3));
  2293. ; 183  : 
  2294. ; 184  :                 // copy the parts found in the mesh
  2295. ; 185  :                 memcpy(&vNormal, pbSrc + cdSrc.rgpTextureElements[dwTexStage]->Offset, cbSizeOfVector);
  2296.  
  2297.   0026e    8b 4d d0     mov     ecx, DWORD PTR _cbSizeOfVector$[ebp]
  2298.   00271    33 c0         xor     eax, eax
  2299.   00273    ab         stosd
  2300.   00274    ab         stosd
  2301.   00275    ab         stosd
  2302.   00276    8b 84 95 5c ff
  2303.     ff ff         mov     eax, DWORD PTR _cdSrc$[ebp+edx*4+160]
  2304.   0027d    0f b7 70 02     movzx     esi, WORD PTR [eax+2]
  2305.   00281    03 75 f8     add     esi, DWORD PTR _pbSrc$[ebp]
  2306.   00284    8b c1         mov     eax, ecx
  2307.   00286    c1 e9 02     shr     ecx, 2
  2308.   00289    8d 7d e4     lea     edi, DWORD PTR _vNormal$[ebp]
  2309.   0028c    f3 a5         rep movsd
  2310.   0028e    8b c8         mov     ecx, eax
  2311.   00290    83 e1 03     and     ecx, 3
  2312.   00293    f3 a4         rep movsb
  2313. $L56329:
  2314.  
  2315. ; 186  : 
  2316. ; 187  :             }
  2317. ; 188  :             D3DXVec3Normalize(&vNormal, &vNormal);
  2318.  
  2319.   00295    8d 45 e4     lea     eax, DWORD PTR _vNormal$[ebp]
  2320.   00298    50         push     eax
  2321.   00299    50         push     eax
  2322.   0029a    e8 00 00 00 00     call     _D3DXVec3Normalize@8
  2323.  
  2324. ; 189  : 
  2325. ; 190  : 
  2326. ; 191  :             // first copy the weights that exist in the source
  2327. ; 192  :             fSum = 0.0f;
  2328.  
  2329.   0029f    d9 ee         fldz
  2330.  
  2331. ; 193  :             cWeights = cdSrc.BIndexedWeights() ? cdSrc.CWeights() - 1: cdSrc.CWeights();
  2332.  
  2333.   002a1    8b b5 48 ff ff
  2334.     ff         mov     esi, DWORD PTR _cdSrc$[ebp+140]
  2335.   002a7    33 c9         xor     ecx, ecx
  2336.   002a9    39 8d 4c ff ff
  2337.     ff         cmp     DWORD PTR _cdSrc$[ebp+144], ecx
  2338.   002af    74 12         je     SHORT $L56590
  2339.   002b1    3b f1         cmp     esi, ecx
  2340.   002b3    75 04         jne     SHORT $L56639
  2341.   002b5    33 c0         xor     eax, eax
  2342.   002b7    eb 05         jmp     SHORT $L56640
  2343. $L56639:
  2344.   002b9    0f b6 46 04     movzx     eax, BYTE PTR [esi+4]
  2345.   002bd    40         inc     eax
  2346. $L56640:
  2347.   002be    8d 50 ff     lea     edx, DWORD PTR [eax-1]
  2348.   002c1    eb 0d         jmp     SHORT $L56760
  2349. $L56590:
  2350.   002c3    3b f1         cmp     esi, ecx
  2351.   002c5    75 04         jne     SHORT $L56646
  2352.   002c7    33 d2         xor     edx, edx
  2353.   002c9    eb 05         jmp     SHORT $L56760
  2354. $L56646:
  2355.   002cb    0f b6 56 04     movzx     edx, BYTE PTR [esi+4]
  2356.   002cf    42         inc     edx
  2357. $L56760:
  2358.  
  2359. ; 194  :             for (iWeight = 0; iWeight < cWeights; iWeight++)
  2360.  
  2361.   002d0    3b d1         cmp     edx, ecx
  2362.   002d2    89 55 10     mov     DWORD PTR _cWeights$[ebp], edx
  2363.   002d5    76 4e         jbe     SHORT $L56748
  2364.   002d7    6a 0c         push     12            ; 0000000cH
  2365.   002d9    58         pop     eax
  2366.   002da    eb 06         jmp     SHORT $L56331
  2367. $L56756:
  2368.   002dc    8b b5 48 ff ff
  2369.     ff         mov     esi, DWORD PTR _cdSrc$[ebp+140]
  2370. $L56331:
  2371.  
  2372. ; 195  :             {
  2373. ; 196  :                 fWeight = cdSrc.FGetWeight(pbSrc, iWeight);
  2374.  
  2375.   002e2    0f b7 76 02     movzx     esi, WORD PTR [esi+2]
  2376.   002e6    8b 7d f8     mov     edi, DWORD PTR _pbSrc$[ebp]
  2377.   002e9    03 f0         add     esi, eax
  2378.  
  2379. ; 197  :                 fSum += fWeight;
  2380. ; 198  : 
  2381. ; 199  :                 cfvfDest.SetWeight(pbDest, iWeight, fWeight);
  2382.  
  2383.   002eb    3b 4d b8     cmp     ecx, DWORD PTR _cfvfDest$[ebp+56]
  2384.   002ee    d9 44 3e f4     fld     DWORD PTR [esi+edi-12]
  2385.   002f2    d9 c0         fld     ST(0)
  2386.   002f4    de c2         faddp     ST(2), ST(0)
  2387.   002f6    d9 55 e0     fst     DWORD PTR $T56656[ebp]
  2388.   002f9    73 09         jae     SHORT $L56754
  2389.   002fb    8b 75 fc     mov     esi, DWORD PTR _pbDest$[ebp]
  2390.   002fe    8b 7d e0     mov     edi, DWORD PTR $T56656[ebp]
  2391.   00301    89 3c 30     mov     DWORD PTR [eax+esi], edi
  2392. $L56754:
  2393.  
  2394. ; 200  :                 cfvfDest.SetWeight(pbDest + cfvfDest.m_cBytesPerVertex, iWeight, fWeight);
  2395.  
  2396.   00304    3b 4d b8     cmp     ecx, DWORD PTR _cfvfDest$[ebp+56]
  2397.   00307    d9 5d e0     fstp     DWORD PTR $T56662[ebp]
  2398.   0030a    73 11         jae     SHORT $L56332
  2399.  
  2400. ; 282  : 
  2401. ; 283  :     return hr;
  2402.  
  2403.   0030c    8b 55 84     mov     edx, DWORD PTR _cfvfDest$[ebp+4]
  2404.   0030f    8b 75 fc     mov     esi, DWORD PTR _pbDest$[ebp]
  2405.   00312    8b 7d e0     mov     edi, DWORD PTR $T56662[ebp]
  2406.   00315    03 d0         add     edx, eax
  2407.   00317    89 3c 32     mov     DWORD PTR [edx+esi], edi
  2408.   0031a    8b 55 10     mov     edx, DWORD PTR _cWeights$[ebp]
  2409. $L56332:
  2410.   0031d    41         inc     ecx
  2411.   0031e    83 c0 04     add     eax, 4
  2412.   00321    3b ca         cmp     ecx, edx
  2413.   00323    72 b7         jb     SHORT $L56756
  2414. $L56748:
  2415.  
  2416. ; 201  :             }
  2417. ; 202  : 
  2418. ; 203  :             // now set the implied weight - always exists in dest
  2419. ; 204  :             cfvfDest.SetWeight(pbDest, iWeight, 1.0f - fSum);
  2420.  
  2421.   00325    8b 55 b8     mov     edx, DWORD PTR _cfvfDest$[ebp+56]
  2422.   00328    d9 e8         fld1
  2423.   0032a    3b ca         cmp     ecx, edx
  2424.   0032c    de e1         fsubrp     ST(1), ST(0)
  2425.   0032e    d9 55 10     fst     DWORD PTR $T56668[ebp]
  2426.   00331    73 0a         jae     SHORT $L56667
  2427.   00333    8b 45 fc     mov     eax, DWORD PTR _pbDest$[ebp]
  2428.   00336    8b 75 10     mov     esi, DWORD PTR $T56668[ebp]
  2429.   00339    89 74 88 0c     mov     DWORD PTR [eax+ecx*4+12], esi
  2430. $L56667:
  2431.  
  2432. ; 205  :             cfvfDest.SetWeight(pbDest + cfvfDest.m_cBytesPerVertex, iWeight, 1.0f - fSum);
  2433.  
  2434.   0033d    3b ca         cmp     ecx, edx
  2435.   0033f    d9 5d 10     fstp     DWORD PTR $T56674[ebp]
  2436.   00342    73 10         jae     SHORT $L56750
  2437.  
  2438. ; 282  : 
  2439. ; 283  :     return hr;
  2440.  
  2441.   00344    8b 45 84     mov     eax, DWORD PTR _cfvfDest$[ebp+4]
  2442.   00347    8b 75 fc     mov     esi, DWORD PTR _pbDest$[ebp]
  2443.   0034a    8b 7d 10     mov     edi, DWORD PTR $T56674[ebp]
  2444.   0034d    8d 44 88 0c     lea     eax, DWORD PTR [eax+ecx*4+12]
  2445.   00351    89 3c 30     mov     DWORD PTR [eax+esi], edi
  2446. $L56750:
  2447.   00354    41         inc     ecx
  2448.   00355    83 bd 4c ff ff
  2449.     ff 00         cmp     DWORD PTR _cdSrc$[ebp+144], 0
  2450.   0035c    74 08         je     SHORT $L56592
  2451.   0035e    8d 42 ff     lea     eax, DWORD PTR [edx-1]
  2452.   00361    89 45 10     mov     DWORD PTR tv363[ebp], eax
  2453.   00364    eb 03         jmp     SHORT $L56684
  2454. $L56592:
  2455.  
  2456. ; 206  :             iWeight += 1;
  2457. ; 207  : 
  2458. ; 208  :             // set any other weights that are unused to 0.0f
  2459. ; 209  :             cWeights = cdSrc.BIndexedWeights() ? cfvfDest.CWeights() - 1: cfvfDest.CWeights();
  2460.  
  2461.   00366    89 55 10     mov     DWORD PTR tv363[ebp], edx
  2462. $L56684:
  2463.  
  2464. ; 210  :             for (; iWeight < cWeights; iWeight++)
  2465.  
  2466.   00369    3b 4d 10     cmp     ecx, DWORD PTR tv363[ebp]
  2467.   0036c    73 3a         jae     SHORT $L56336
  2468.  
  2469. ; 211  :             {
  2470. ; 212  :                 cfvfDest.SetWeight(pbDest, iWeight, 0.0f);
  2471.  
  2472.   0036e    d9 ee         fldz
  2473.   00370    8d 04 8d 0c 00
  2474.     00 00         lea     eax, DWORD PTR [ecx*4+12]
  2475.   00377    d9 5d e0     fstp     DWORD PTR $T56691[ebp]
  2476.  
  2477. ; 213  :                 cfvfDest.SetWeight(pbDest + cfvfDest.m_cBytesPerVertex, iWeight, 0.0f);
  2478.  
  2479.   0037a    d9 ee         fldz
  2480.   0037c    d9 5d cc     fstp     DWORD PTR $T56697[ebp]
  2481.   0037f    eb 03         jmp     SHORT $L56334
  2482. $L56757:
  2483.  
  2484. ; 206  :             iWeight += 1;
  2485. ; 207  : 
  2486. ; 208  :             // set any other weights that are unused to 0.0f
  2487. ; 209  :             cWeights = cdSrc.BIndexedWeights() ? cfvfDest.CWeights() - 1: cfvfDest.CWeights();
  2488.  
  2489.   00381    8b 55 b8     mov     edx, DWORD PTR _cfvfDest$[ebp+56]
  2490. $L56334:
  2491.  
  2492. ; 211  :             {
  2493. ; 212  :                 cfvfDest.SetWeight(pbDest, iWeight, 0.0f);
  2494.  
  2495.   00384    3b ca         cmp     ecx, edx
  2496.   00386    73 17         jae     SHORT $L56335
  2497.   00388    8b 55 fc     mov     edx, DWORD PTR _pbDest$[ebp]
  2498.   0038b    8b 75 e0     mov     esi, DWORD PTR $T56691[ebp]
  2499.  
  2500. ; 213  :                 cfvfDest.SetWeight(pbDest + cfvfDest.m_cBytesPerVertex, iWeight, 0.0f);
  2501.  
  2502.   0038e    8b 7d cc     mov     edi, DWORD PTR $T56697[ebp]
  2503.   00391    89 34 10     mov     DWORD PTR [eax+edx], esi
  2504.  
  2505. ; 282  : 
  2506. ; 283  :     return hr;
  2507.  
  2508.   00394    8b 55 84     mov     edx, DWORD PTR _cfvfDest$[ebp+4]
  2509.   00397    8b 75 fc     mov     esi, DWORD PTR _pbDest$[ebp]
  2510.   0039a    03 d0         add     edx, eax
  2511.   0039c    89 3c 32     mov     DWORD PTR [edx+esi], edi
  2512. $L56335:
  2513.   0039f    41         inc     ecx
  2514.   003a0    83 c0 04     add     eax, 4
  2515.   003a3    3b 4d 10     cmp     ecx, DWORD PTR tv363[ebp]
  2516.   003a6    72 d9         jb     SHORT $L56757
  2517. $L56336:
  2518.  
  2519. ; 214  :             }
  2520. ; 215  : 
  2521. ; 216  :             // if indexed skinning, copy the indices
  2522. ; 217  :             if (cdSrc.BIndexedWeights())
  2523.  
  2524.   003a8    8b 85 4c ff ff
  2525.     ff         mov     eax, DWORD PTR _cdSrc$[ebp+144]
  2526.   003ae    85 c0         test     eax, eax
  2527.   003b0    74 36         je     SHORT $L56337
  2528.  
  2529. ; 218  :             {
  2530. ; 219  :                 cfvfDest.SetIndices(pbDest, *cdSrc.PdwGetIndices(pbSrc));
  2531.  
  2532.   003b2    0f b7 40 02     movzx     eax, WORD PTR [eax+2]
  2533.   003b6    8b 4d f8     mov     ecx, DWORD PTR _pbSrc$[ebp]
  2534.   003b9    ff 34 08     push     DWORD PTR [eax+ecx]
  2535.   003bc    8d 4d 80     lea     ecx, DWORD PTR _cfvfDest$[ebp]
  2536.   003bf    ff 75 fc     push     DWORD PTR _pbDest$[ebp]
  2537.   003c2    e8 00 00 00 00     call     ?SetIndices@DXCrackFVF@@QAEXPAXK@Z ; DXCrackFVF::SetIndices
  2538.  
  2539. ; 220  :                 cfvfDest.SetIndices(pbDest + cfvfDest.m_cBytesPerVertex, *cdSrc.PdwGetIndices(pbSrc));
  2540.  
  2541.   003c7    8b 85 4c ff ff
  2542.     ff         mov     eax, DWORD PTR _cdSrc$[ebp+144]
  2543.   003cd    0f b7 40 02     movzx     eax, WORD PTR [eax+2]
  2544.   003d1    8b 4d f8     mov     ecx, DWORD PTR _pbSrc$[ebp]
  2545.   003d4    ff 34 08     push     DWORD PTR [eax+ecx]
  2546.   003d7    8b 45 fc     mov     eax, DWORD PTR _pbDest$[ebp]
  2547.   003da    8b 4d 84     mov     ecx, DWORD PTR _cfvfDest$[ebp+4]
  2548.   003dd    03 c8         add     ecx, eax
  2549.   003df    51         push     ecx
  2550.   003e0    8d 4d 80     lea     ecx, DWORD PTR _cfvfDest$[ebp]
  2551.   003e3    e8 00 00 00 00     call     ?SetIndices@DXCrackFVF@@QAEXPAXK@Z ; DXCrackFVF::SetIndices
  2552. $L56337:
  2553.  
  2554. ; 221  :             }
  2555. ; 222  : 
  2556. ; 223  :             // set one normal to zero and the other to the correct value
  2557. ; 224  :             //   both points have the same position though.  the normal
  2558. ; 225  :             //   is added post skinning 
  2559. ; 226  : 
  2560. ; 227  :             // normal to zero
  2561. ; 228  :             cfvfDest.SetPosition(pbDest, &vPos);
  2562.  
  2563.   003e8    8b 7d fc     mov     edi, DWORD PTR _pbDest$[ebp]
  2564.   003eb    8d 75 d4     lea     esi, DWORD PTR _vPos$[ebp]
  2565.   003ee    a5         movsd
  2566.   003ef    a5         movsd
  2567.  
  2568. ; 229  :             cfvfDest.SetNormal(pbDest, &vZero);
  2569.  
  2570.   003f0    8d 45 c0     lea     eax, DWORD PTR _vZero$[ebp]
  2571.   003f3    50         push     eax
  2572.   003f4    a5         movsd
  2573.   003f5    ff 75 fc     push     DWORD PTR _pbDest$[ebp]
  2574.   003f8    8d 4d 80     lea     ecx, DWORD PTR _cfvfDest$[ebp]
  2575.   003fb    e8 00 00 00 00     call     ?SetNormal@DXCrackFVF@@QAEXPAXPAUD3DXVECTOR3@@@Z ; DXCrackFVF::SetNormal
  2576.  
  2577. ; 230  :             pbDest += cfvfDest.m_cBytesPerVertex;
  2578.  
  2579.   00400    8b 45 84     mov     eax, DWORD PTR _cfvfDest$[ebp+4]
  2580.   00403    01 45 fc     add     DWORD PTR _pbDest$[ebp], eax
  2581.  
  2582. ; 231  : 
  2583. ; 232  :             // correct normal
  2584. ; 233  :             cfvfDest.SetPosition(pbDest, &vPos);
  2585.  
  2586.   00406    8b 7d fc     mov     edi, DWORD PTR _pbDest$[ebp]
  2587.   00409    8d 75 d4     lea     esi, DWORD PTR _vPos$[ebp]
  2588.   0040c    a5         movsd
  2589.   0040d    a5         movsd
  2590.  
  2591. ; 234  :             cfvfDest.SetNormal(pbDest, &vNormal);
  2592.  
  2593.   0040e    8d 45 e4     lea     eax, DWORD PTR _vNormal$[ebp]
  2594.   00411    50         push     eax
  2595.   00412    a5         movsd
  2596.   00413    ff 75 fc     push     DWORD PTR _pbDest$[ebp]
  2597.   00416    8d 4d 80     lea     ecx, DWORD PTR _cfvfDest$[ebp]
  2598.   00419    e8 00 00 00 00     call     ?SetNormal@DXCrackFVF@@QAEXPAXPAUD3DXVECTOR3@@@Z ; DXCrackFVF::SetNormal
  2599.  
  2600. ; 235  :             pbDest += cfvfDest.m_cBytesPerVertex;
  2601.  
  2602.   0041e    8b 45 84     mov     eax, DWORD PTR _cfvfDest$[ebp+4]
  2603.   00421    01 45 fc     add     DWORD PTR _pbDest$[ebp], eax
  2604.  
  2605. ; 236  : 
  2606. ; 237  :             pbSrc += cdSrc.m_cBytesPerVertex;
  2607.  
  2608.   00424    8b 85 7c ff ff
  2609.     ff         mov     eax, DWORD PTR _cdSrc$[ebp+192]
  2610.   0042a    01 45 f8     add     DWORD PTR _pbSrc$[ebp], eax
  2611.   0042d    ff 4d f4     dec     DWORD PTR tv204[ebp]
  2612.   00430    0f 85 08 fe ff
  2613.     ff         jne     $L56325
  2614.  
  2615. ; 238  :         }
  2616. ; 239  :     }
  2617. ; 240  :     else
  2618.  
  2619.   00436    e9 cf 00 00 00     jmp     $L56761
  2620. $L56324:
  2621.  
  2622. ; 241  :     {
  2623. ; 242  :         // first figure out the counts for the number of creases per attribute group
  2624. ; 243  :         for (iVertex = 0; iVertex < cVertices; iVertex++)
  2625.  
  2626.   0043b    85 c0         test     eax, eax
  2627.   0043d    0f 86 ca 00 00
  2628.     00         jbe     $e_Exit$56285
  2629.   00443    89 45 f4     mov     DWORD PTR tv172[ebp], eax
  2630. $L56339:
  2631.  
  2632. ; 244  :         {
  2633. ; 245  :             vPos = *cdSrc.PvGetPosition(pbSrc);
  2634.  
  2635.   00446    8b 85 44 ff ff
  2636.     ff         mov     eax, DWORD PTR _cdSrc$[ebp+136]
  2637.   0044c    0f b7 70 02     movzx     esi, WORD PTR [eax+2]
  2638.   00450    03 75 f8     add     esi, DWORD PTR _pbSrc$[ebp]
  2639.  
  2640. ; 246  :             // show binormals
  2641. ; 247  : 
  2642. ; 248  :             // if use the normal, easy
  2643. ; 249  :             if (dwTexStage == UNUSED32)
  2644.  
  2645.   00453    8b 55 0c     mov     edx, DWORD PTR _dwTexStage$[ebp]
  2646.   00456    83 fa ff     cmp     edx, -1
  2647.   00459    8d 7d d4     lea     edi, DWORD PTR _vPos$[ebp]
  2648.   0045c    a5         movsd
  2649.   0045d    a5         movsd
  2650.   0045e    a5         movsd
  2651.  
  2652. ; 250  :             {
  2653. ; 251  :                 vNormal = *cdSrc.PvGetNormal(pbSrc);
  2654.  
  2655.   0045f    8d 7d e4     lea     edi, DWORD PTR _vNormal$[ebp]
  2656.   00462    75 12         jne     SHORT $L56342
  2657.   00464    8b 85 50 ff ff
  2658.     ff         mov     eax, DWORD PTR _cdSrc$[ebp+148]
  2659.   0046a    0f b7 70 02     movzx     esi, WORD PTR [eax+2]
  2660.   0046e    03 75 f8     add     esi, DWORD PTR _pbSrc$[ebp]
  2661.   00471    a5         movsd
  2662.   00472    a5         movsd
  2663.   00473    a5         movsd
  2664.  
  2665. ; 252  :             }
  2666. ; 253  :             else  // else grab a texture coordinate as a vector
  2667.  
  2668.   00474    eb 27         jmp     SHORT $L56343
  2669. $L56342:
  2670.  
  2671. ; 254  :             {
  2672. ; 255  :                 // set all parts of the vector to zero
  2673. ; 256  :                 memset(&vNormal, 0, sizeof(D3DXVECTOR3));
  2674. ; 257  : 
  2675. ; 258  :                 // copy the parts found in the mesh
  2676. ; 259  :                 memcpy(&vNormal, pbSrc + cdSrc.rgpTextureElements[dwTexStage]->Offset, cbSizeOfVector);
  2677.  
  2678.   00476    8b 4d d0     mov     ecx, DWORD PTR _cbSizeOfVector$[ebp]
  2679.   00479    33 c0         xor     eax, eax
  2680.   0047b    ab         stosd
  2681.   0047c    ab         stosd
  2682.   0047d    ab         stosd
  2683.   0047e    8b 84 95 5c ff
  2684.     ff ff         mov     eax, DWORD PTR _cdSrc$[ebp+edx*4+160]
  2685.   00485    0f b7 70 02     movzx     esi, WORD PTR [eax+2]
  2686.   00489    03 75 f8     add     esi, DWORD PTR _pbSrc$[ebp]
  2687.   0048c    8b c1         mov     eax, ecx
  2688.   0048e    c1 e9 02     shr     ecx, 2
  2689.   00491    8d 7d e4     lea     edi, DWORD PTR _vNormal$[ebp]
  2690.   00494    f3 a5         rep movsd
  2691.   00496    8b c8         mov     ecx, eax
  2692.   00498    83 e1 03     and     ecx, 3
  2693.   0049b    f3 a4         rep movsb
  2694. $L56343:
  2695.  
  2696. ; 260  : 
  2697. ; 261  :             }
  2698. ; 262  :             D3DXVec3Normalize(&vNormal, &vNormal);
  2699.  
  2700.   0049d    8d 45 e4     lea     eax, DWORD PTR _vNormal$[ebp]
  2701.   004a0    50         push     eax
  2702.   004a1    50         push     eax
  2703.   004a2    e8 00 00 00 00     call     _D3DXVec3Normalize@8
  2704.  
  2705. ; 263  :             vNormal *= fLength;
  2706.  
  2707.   004a7    d9 45 e4     fld     DWORD PTR _vNormal$[ebp]
  2708.   004aa    d8 4d 10     fmul     DWORD PTR _fLength$[ebp]
  2709.  
  2710. ; 264  :             pbSrc += cdSrc.m_cBytesPerVertex;
  2711.  
  2712.   004ad    8b 85 7c ff ff
  2713.     ff         mov     eax, DWORD PTR _cdSrc$[ebp+192]
  2714.  
  2715. ; 265  : 
  2716. ; 266  :             cfvfDest.SetPosition(pbDest, &vPos);
  2717.  
  2718.   004b3    8b 7d fc     mov     edi, DWORD PTR _pbDest$[ebp]
  2719.   004b6    01 45 f8     add     DWORD PTR _pbSrc$[ebp], eax
  2720.   004b9    d9 5d e4     fstp     DWORD PTR _vNormal$[ebp]
  2721.  
  2722. ; 267  :             pbDest += cfvfDest.m_cBytesPerVertex;
  2723.  
  2724.   004bc    8b 45 84     mov     eax, DWORD PTR _cfvfDest$[ebp+4]
  2725.   004bf    d9 45 e8     fld     DWORD PTR _vNormal$[ebp+4]
  2726.   004c2    8d 75 d4     lea     esi, DWORD PTR _vPos$[ebp]
  2727.   004c5    d8 4d 10     fmul     DWORD PTR _fLength$[ebp]
  2728.   004c8    d9 5d e8     fstp     DWORD PTR _vNormal$[ebp+4]
  2729.   004cb    d9 45 ec     fld     DWORD PTR _vNormal$[ebp+8]
  2730.   004ce    d8 4d 10     fmul     DWORD PTR _fLength$[ebp]
  2731.   004d1    d9 5d ec     fstp     DWORD PTR _vNormal$[ebp+8]
  2732.   004d4    a5         movsd
  2733.  
  2734. ; 268  : 
  2735. ; 269  :             vPos += vNormal;
  2736.  
  2737.   004d5    d9 45 d4     fld     DWORD PTR _vPos$[ebp]
  2738.   004d8    a5         movsd
  2739.   004d9    a5         movsd
  2740.   004da    d8 45 e4     fadd     DWORD PTR _vNormal$[ebp]
  2741.   004dd    01 45 fc     add     DWORD PTR _pbDest$[ebp], eax
  2742.  
  2743. ; 270  :             cfvfDest.SetPosition(pbDest, &vPos);
  2744.  
  2745.   004e0    8b 7d fc     mov     edi, DWORD PTR _pbDest$[ebp]
  2746.   004e3    d9 5d d4     fstp     DWORD PTR _vPos$[ebp]
  2747.   004e6    d9 45 d8     fld     DWORD PTR _vPos$[ebp+4]
  2748.   004e9    8d 75 d4     lea     esi, DWORD PTR _vPos$[ebp]
  2749.   004ec    d8 45 e8     fadd     DWORD PTR _vNormal$[ebp+4]
  2750.   004ef    d9 5d d8     fstp     DWORD PTR _vPos$[ebp+4]
  2751.   004f2    d9 45 dc     fld     DWORD PTR _vPos$[ebp+8]
  2752.   004f5    d8 45 ec     fadd     DWORD PTR _vNormal$[ebp+8]
  2753.   004f8    d9 5d dc     fstp     DWORD PTR _vPos$[ebp+8]
  2754.   004fb    a5         movsd
  2755.   004fc    a5         movsd
  2756.   004fd    a5         movsd
  2757.  
  2758. ; 271  :             pbDest += cfvfDest.m_cBytesPerVertex;
  2759.  
  2760.   004fe    01 45 fc     add     DWORD PTR _pbDest$[ebp], eax
  2761.   00501    ff 4d f4     dec     DWORD PTR tv172[ebp]
  2762.   00504    0f 85 3c ff ff
  2763.     ff         jne     $L56339
  2764. $L56761:
  2765.  
  2766. ; 241  :     {
  2767. ; 242  :         // first figure out the counts for the number of creases per attribute group
  2768. ; 243  :         for (iVertex = 0; iVertex < cVertices; iVertex++)
  2769.  
  2770.   0050a    8b 75 08     mov     esi, DWORD PTR _ptmMesh$[ebp]
  2771. $e_Exit$56285:
  2772.  
  2773. ; 273  :     }
  2774. ; 274  : 
  2775. ; 275  : e_Exit:
  2776. ; 276  : 
  2777. ; 277  :     if (pbSrc != NULL)
  2778.  
  2779.   0050d    83 7d f8 00     cmp     DWORD PTR _pbSrc$[ebp], 0
  2780.   00511    74 06         je     SHORT $L56345
  2781.  
  2782. ; 278  :         ptmMesh->UnlockVertexBuffer();
  2783.  
  2784.   00513    8b 06         mov     eax, DWORD PTR [esi]
  2785.   00515    56         push     esi
  2786.   00516    ff 50 40     call     DWORD PTR [eax+64]
  2787. $L56345:
  2788.  
  2789. ; 279  : 
  2790. ; 280  :     if (pbDest != NULL)
  2791.  
  2792.   00519    83 7d fc 00     cmp     DWORD PTR _pbDest$[ebp], 0
  2793.   0051d    74 09         je     SHORT $L56346
  2794.  
  2795. ; 281  :         m_pVertexBuffer->Unlock();
  2796.  
  2797.   0051f    8b 5b 04     mov     ebx, DWORD PTR [ebx+4]
  2798.   00522    8b 03         mov     eax, DWORD PTR [ebx]
  2799.   00524    53         push     ebx
  2800.   00525    ff 50 30     call     DWORD PTR [eax+48]
  2801. $L56346:
  2802.  
  2803. ; 282  : 
  2804. ; 283  :     return hr;
  2805.  
  2806.   00528    8b 45 f0     mov     eax, DWORD PTR _hr$[ebp]
  2807.   0052b    5f         pop     edi
  2808.   0052c    5e         pop     esi
  2809.   0052d    5b         pop     ebx
  2810.  
  2811. ; 284  : }
  2812.  
  2813.   0052e    c9         leave
  2814.   0052f    c2 0c 00     ret     12            ; 0000000cH
  2815. ?Init@CShowNormals@@QAEJPAUID3DXBaseMesh@@KM@Z ENDP    ; CShowNormals::Init
  2816. _TEXT    ENDS
  2817. PUBLIC    ??_C@_04BEMIBDAE@mTot?$AA@            ; `string'
  2818. PUBLIC    ??_C@_07HHMNENJH@mWorlds?$AA@            ; `string'
  2819. PUBLIC    ??_C@_04BFCOOMBD@vScl?$AA@            ; `string'
  2820. PUBLIC    ??_C@_04JKCKMDGO@vClr?$AA@            ; `string'
  2821. PUBLIC    ?Draw@CShowNormals@@QAEJKKPAUID3DXEffect@@0KPAUD3DXMATRIX@@K@Z ; CShowNormals::Draw
  2822. EXTRN    _D3DXMatrixMultiply@12:NEAR
  2823. ;    COMDAT ??_C@_04BEMIBDAE@mTot?$AA@
  2824. ; File d:\builds\nt32_fre\public\sdk\inc\d3dx9math.inl
  2825. CONST    SEGMENT
  2826. ??_C@_04BEMIBDAE@mTot?$AA@ DB 'mTot', 00H        ; `string'
  2827. CONST    ENDS
  2828. ;    COMDAT ??_C@_07HHMNENJH@mWorlds?$AA@
  2829. CONST    SEGMENT
  2830. ??_C@_07HHMNENJH@mWorlds?$AA@ DB 'mWorlds', 00H        ; `string'
  2831. CONST    ENDS
  2832. ;    COMDAT ??_C@_04BFCOOMBD@vScl?$AA@
  2833. CONST    SEGMENT
  2834. ??_C@_04BFCOOMBD@vScl?$AA@ DB 'vScl', 00H        ; `string'
  2835. CONST    ENDS
  2836. ;    COMDAT ??_C@_04JKCKMDGO@vClr?$AA@
  2837. CONST    SEGMENT
  2838. ??_C@_04JKCKMDGO@vClr?$AA@ DB 'vClr', 00H        ; `string'
  2839. ; Function compile flags: /Ogs
  2840. ; File d:\builds\nt32_fre\multimedia\directx\dxsdk\src\mview\gxu\shownormal.cpp
  2841. CONST    ENDS
  2842. ;    COMDAT ?Draw@CShowNormals@@QAEJKKPAUID3DXEffect@@0KPAUD3DXMATRIX@@K@Z
  2843. _TEXT    SEGMENT
  2844. _matTot$ = -304                        ; size = 64
  2845. _matView$ = -240                    ; size = 64
  2846. _matProj$ = -176                    ; size = 64
  2847. _matWorld$ = -112                    ; size = 64
  2848. _vScale$ = -48                        ; size = 16
  2849. _vClr$ = -32                        ; size = 16
  2850. _dwSoftwareMode$ = -16                    ; size = 4
  2851. _cPasses$ = -12                        ; size = 4
  2852. _cBytesPerVertex$ = -8                    ; size = 4
  2853. _bChangedSWMode$ = -4                    ; size = 4
  2854. _cLines$ = 8                        ; size = 4
  2855. _iAttrib$ = 8                        ; size = 4
  2856. _iVertex$ = 12                        ; size = 4
  2857. _pfxCurrent$ = 16                    ; size = 4
  2858. _pfxShowNormals$ = 16                    ; size = 4
  2859. _dwFVF$ = 20                        ; size = 4
  2860. _pfxColor$ = 20                        ; size = 4
  2861. tv648 = 24                        ; size = 4
  2862. tv647 = 24                        ; size = 4
  2863. tv646 = 24                        ; size = 4
  2864. tv645 = 24                        ; size = 4
  2865. _iPass$ = 24                        ; size = 4
  2866. _dwColor$ = 24                        ; size = 4
  2867. _cLinesCur$ = 28                    ; size = 4
  2868. _rgmIndexedMatrices$ = 28                ; size = 4
  2869. _cIndexedMatrices$ = 32                    ; size = 4
  2870. ?Draw@CShowNormals@@QAEJKKPAUID3DXEffect@@0KPAUD3DXMATRIX@@K@Z PROC NEAR ; CShowNormals::Draw, COMDAT
  2871. ; _this$ = ecx
  2872.  
  2873. ; 471  : }
  2874.  
  2875.   00000    8b ff         npad     2
  2876.  
  2877. ; 305  : {
  2878.  
  2879.   00002    55         push     ebp
  2880.   00003    8b ec         mov     ebp, esp
  2881.   00005    81 ec 30 01 00
  2882.     00         sub     esp, 304        ; 00000130H
  2883.   0000b    53         push     ebx
  2884.  
  2885. ; 306  :     HRESULT hr;
  2886. ; 307  :     LPD3DXEFFECT pfxCurrent;
  2887. ; 308  :     DWORD dwFVF;
  2888. ; 309  :     UINT iPass;
  2889. ; 310  :     UINT cPasses;
  2890. ; 311  :     DWORD cBytesPerVertex;
  2891. ; 312  :     D3DXMATRIX matWorld;
  2892. ; 313  :     D3DXMATRIX matView;
  2893. ; 314  :     D3DXMATRIX matProj;
  2894. ; 315  :     D3DXMATRIX matTot;
  2895. ; 316  :     D3DXVECTOR4 vScale(m_fScale, 0.0f, 0.0f,0.0f);
  2896.  
  2897.   0000c    d9 ee         fldz
  2898.   0000e    d9 5d d4     fstp     DWORD PTR _vScale$[ebp+4]
  2899.   00011    56         push     esi
  2900.   00012    8b f1         mov     esi, ecx
  2901.   00014    d9 ee         fldz
  2902.   00016    8b 46 18     mov     eax, DWORD PTR [esi+24]
  2903.   00019    d9 5d d8     fstp     DWORD PTR _vScale$[ebp+8]
  2904.   0001c    89 45 d0     mov     DWORD PTR _vScale$[ebp], eax
  2905.   0001f    d9 ee         fldz
  2906.  
  2907. ; 317  :     D3DXCOLOR vClr(dwColor);
  2908.  
  2909.   00021    8b 45 18     mov     eax, DWORD PTR _dwColor$[ebp]
  2910.   00024    d9 5d dc     fstp     DWORD PTR _vScale$[ebp+12]
  2911.   00027    8b c8         mov     ecx, eax
  2912.   00029    d9 05 00 00 00
  2913.     00         fld     DWORD PTR __real@3b808081
  2914.   0002f    c1 e9 10     shr     ecx, 16            ; 00000010H
  2915.   00032    0f b6 c9     movzx     ecx, cl
  2916.   00035    89 4d 18     mov     DWORD PTR tv648[ebp], ecx
  2917.   00038    8b c8         mov     ecx, eax
  2918.   0003a    c1 e9 08     shr     ecx, 8
  2919.   0003d    db 45 18     fild     DWORD PTR tv648[ebp]
  2920.   00040    0f b6 c9     movzx     ecx, cl
  2921.   00043    d8 c9         fmul     ST(0), ST(1)
  2922.   00045    89 4d 18     mov     DWORD PTR tv647[ebp], ecx
  2923.   00048    0f b6 c8     movzx     ecx, al
  2924.   0004b    d9 5d e0     fstp     DWORD PTR _vClr$[ebp]
  2925.   0004e    db 45 18     fild     DWORD PTR tv647[ebp]
  2926.   00051    89 4d 18     mov     DWORD PTR tv646[ebp], ecx
  2927.   00054    c1 e8 18     shr     eax, 24            ; 00000018H
  2928.   00057    57         push     edi
  2929.   00058    d8 c9         fmul     ST(0), ST(1)
  2930.   0005a    d9 5d e4     fstp     DWORD PTR _vClr$[ebp+4]
  2931.   0005d    db 45 18     fild     DWORD PTR tv646[ebp]
  2932.   00060    89 45 18     mov     DWORD PTR tv645[ebp], eax
  2933.  
  2934. ; 318  :     BOOL dwSoftwareMode;
  2935. ; 319  :     DWORD cLines;
  2936. ; 320  :     DWORD cLinesCur;
  2937. ; 321  :     DWORD iVertexStart;
  2938. ; 322  :     DWORD iMatrix;
  2939. ; 323  :     BOOL bChangedSWMode = FALSE;
  2940.  
  2941.   00063    33 c0         xor     eax, eax
  2942.  
  2943. ; 324  :     DWORD iSubset;
  2944. ; 325  : 
  2945. ; 326  :     if (m_bSkinning)
  2946.  
  2947.   00065    39 46 0c     cmp     DWORD PTR [esi+12], eax
  2948.   00068    d8 c9         fmul     ST(0), ST(1)
  2949.   0006a    89 45 fc     mov     DWORD PTR _bChangedSWMode$[ebp], eax
  2950.   0006d    d9 5d e8     fstp     DWORD PTR _vClr$[ebp+8]
  2951.   00070    db 45 18     fild     DWORD PTR tv645[ebp]
  2952.   00073    d8 c9         fmul     ST(0), ST(1)
  2953.   00075    d9 5d ec     fstp     DWORD PTR _vClr$[ebp+12]
  2954.   00078    dd d8         fstp     ST(0)
  2955.   0007a    0f 84 1d 02 00
  2956.     00         je     $L56405
  2957.  
  2958. ; 327  :     {
  2959. ; 328  :         if (!m_bIndexedSkinning)
  2960.  
  2961.   00080    39 46 10     cmp     DWORD PTR [esi+16], eax
  2962.  
  2963. ; 329  :         {
  2964. ; 330  :             pfxCurrent = pfxShowNormals;
  2965.  
  2966.   00083    8b 7d 10     mov     edi, DWORD PTR _pfxShowNormals$[ebp]
  2967.  
  2968. ; 331  :             dwFVF = SKINNEDFVF;
  2969. ; 332  :             cBytesPerVertex = SKINNEDFVFSTRIDE;
  2970. ; 333  :             pfxShowNormals->SetTechnique(pfxShowNormals->GetTechnique(0));
  2971.  
  2972.   00086    8b 1f         mov     ebx, DWORD PTR [edi]
  2973.   00088    89 7d 10     mov     DWORD PTR _pfxCurrent$[ebp], edi
  2974.   0008b    0f 85 20 01 00
  2975.     00         jne     $L56406
  2976.   00091    50         push     eax
  2977.   00092    57         push     edi
  2978.   00093    c7 45 14 1c 00
  2979.     00 00         mov     DWORD PTR _dwFVF$[ebp], 28 ; 0000001cH
  2980.   0009a    c7 45 f8 28 00
  2981.     00 00         mov     DWORD PTR _cBytesPerVertex$[ebp], 40 ; 00000028H
  2982.   000a1    ff 53 30     call     DWORD PTR [ebx+48]
  2983.   000a4    50         push     eax
  2984.   000a5    57         push     edi
  2985.   000a6    ff 93 f0 00 00
  2986.     00         call     DWORD PTR [ebx+240]
  2987.  
  2988. ; 334  : 
  2989. ; 335  :             m_pDevice->GetTransform(D3DTS_VIEW,&matView);
  2990.  
  2991.   000ac    8b 06         mov     eax, DWORD PTR [esi]
  2992.   000ae    8b 08         mov     ecx, DWORD PTR [eax]
  2993.   000b0    8d 95 10 ff ff
  2994.     ff         lea     edx, DWORD PTR _matView$[ebp]
  2995.   000b6    52         push     edx
  2996.   000b7    6a 02         push     2
  2997.   000b9    50         push     eax
  2998.   000ba    ff 91 b4 00 00
  2999.     00         call     DWORD PTR [ecx+180]
  3000.  
  3001. ; 336  :             m_pDevice->GetTransform(D3DTS_PROJECTION,&matProj);
  3002.  
  3003.   000c0    8b 06         mov     eax, DWORD PTR [esi]
  3004.   000c2    8b 08         mov     ecx, DWORD PTR [eax]
  3005.   000c4    8d 95 50 ff ff
  3006.     ff         lea     edx, DWORD PTR _matProj$[ebp]
  3007.   000ca    52         push     edx
  3008.   000cb    6a 03         push     3
  3009.   000cd    50         push     eax
  3010.   000ce    ff 91 b4 00 00
  3011.     00         call     DWORD PTR [ecx+180]
  3012.  
  3013. ; 337  :             m_pDevice->GetTransform(D3DTS_WORLD,&matWorld);
  3014.  
  3015.   000d4    8b 06         mov     eax, DWORD PTR [esi]
  3016.   000d6    8b 08         mov     ecx, DWORD PTR [eax]
  3017.   000d8    8d 55 90     lea     edx, DWORD PTR _matWorld$[ebp]
  3018.   000db    52         push     edx
  3019.   000dc    bb 00 01 00 00     mov     ebx, 256        ; 00000100H
  3020.   000e1    53         push     ebx
  3021.   000e2    50         push     eax
  3022.   000e3    ff 91 b4 00 00
  3023.     00         call     DWORD PTR [ecx+180]
  3024.  
  3025. ; 338  : 
  3026. ; 339  :             //D3DXMatrixMultiply(&matTot, &matWorld,&matView);
  3027. ; 340  :             D3DXMatrixMultiply(&matTot,&matView,&matProj);
  3028.  
  3029.   000e9    8d 85 50 ff ff
  3030.     ff         lea     eax, DWORD PTR _matProj$[ebp]
  3031.   000ef    50         push     eax
  3032.   000f0    8d 85 10 ff ff
  3033.     ff         lea     eax, DWORD PTR _matView$[ebp]
  3034.   000f6    50         push     eax
  3035.   000f7    8d 85 d0 fe ff
  3036.     ff         lea     eax, DWORD PTR _matTot$[ebp]
  3037.   000fd    50         push     eax
  3038.   000fe    e8 00 00 00 00     call     _D3DXMatrixMultiply@12
  3039.  
  3040. ; 341  :             pfxShowNormals->SetMatrix("mTot", &matTot);                       
  3041.  
  3042.   00103    8b 07         mov     eax, DWORD PTR [edi]
  3043.   00105    8d 8d d0 fe ff
  3044.     ff         lea     ecx, DWORD PTR _matTot$[ebp]
  3045.   0010b    51         push     ecx
  3046.   0010c    68 00 00 00 00     push     OFFSET FLAT:??_C@_04BEMIBDAE@mTot?$AA@
  3047.   00111    57         push     edi
  3048.   00112    ff 90 98 00 00
  3049.     00         call     DWORD PTR [eax+152]
  3050.  
  3051. ; 342  : 
  3052. ; 343  :             m_pDevice->GetTransform(D3DTS_WORLD,&matWorld);
  3053.  
  3054.   00118    8b 06         mov     eax, DWORD PTR [esi]
  3055.   0011a    8b 08         mov     ecx, DWORD PTR [eax]
  3056.   0011c    8d 55 90     lea     edx, DWORD PTR _matWorld$[ebp]
  3057.   0011f    52         push     edx
  3058.   00120    53         push     ebx
  3059.   00121    50         push     eax
  3060.   00122    ff 91 b4 00 00
  3061.     00         call     DWORD PTR [ecx+180]
  3062.  
  3063. ; 344  :             pfxShowNormals->SetMatrix("mWd1", &matWorld);                       
  3064.  
  3065.   00128    8b 07         mov     eax, DWORD PTR [edi]
  3066.   0012a    8d 4d 90     lea     ecx, DWORD PTR _matWorld$[ebp]
  3067.   0012d    51         push     ecx
  3068.   0012e    68 00 00 00 00     push     OFFSET FLAT:??_C@_04IHCGOIEL@mWd1?$AA@
  3069.   00133    57         push     edi
  3070.   00134    ff 90 98 00 00
  3071.     00         call     DWORD PTR [eax+152]
  3072.  
  3073. ; 345  : 
  3074. ; 346  :             m_pDevice->GetTransform(D3DTS_WORLD1,&matWorld);
  3075.  
  3076.   0013a    8b 06         mov     eax, DWORD PTR [esi]
  3077.   0013c    8b 08         mov     ecx, DWORD PTR [eax]
  3078.   0013e    8d 55 90     lea     edx, DWORD PTR _matWorld$[ebp]
  3079.   00141    52         push     edx
  3080.   00142    68 01 01 00 00     push     257            ; 00000101H
  3081.   00147    50         push     eax
  3082.   00148    ff 91 b4 00 00
  3083.     00         call     DWORD PTR [ecx+180]
  3084.  
  3085. ; 347  :             pfxShowNormals->SetMatrix("mWd2", &matWorld);                       
  3086.  
  3087.   0014e    8b 07         mov     eax, DWORD PTR [edi]
  3088.   00150    8d 4d 90     lea     ecx, DWORD PTR _matWorld$[ebp]
  3089.   00153    51         push     ecx
  3090.   00154    68 00 00 00 00     push     OFFSET FLAT:??_C@_04KMALLLII@mWd2?$AA@
  3091.   00159    57         push     edi
  3092.   0015a    ff 90 98 00 00
  3093.     00         call     DWORD PTR [eax+152]
  3094.  
  3095. ; 348  : 
  3096. ; 349  :             m_pDevice->GetTransform(D3DTS_WORLD2,&matWorld);
  3097.  
  3098.   00160    8b 06         mov     eax, DWORD PTR [esi]
  3099.   00162    8b 08         mov     ecx, DWORD PTR [eax]
  3100.   00164    8d 55 90     lea     edx, DWORD PTR _matWorld$[ebp]
  3101.   00167    52         push     edx
  3102.   00168    68 02 01 00 00     push     258            ; 00000102H
  3103.   0016d    50         push     eax
  3104.   0016e    ff 91 b4 00 00
  3105.     00         call     DWORD PTR [ecx+180]
  3106.  
  3107. ; 350  :             pfxShowNormals->SetMatrix("mWd3", &matWorld);                       
  3108.  
  3109.   00174    8b 07         mov     eax, DWORD PTR [edi]
  3110.   00176    8d 4d 90     lea     ecx, DWORD PTR _matWorld$[ebp]
  3111.   00179    51         push     ecx
  3112.   0017a    68 00 00 00 00     push     OFFSET FLAT:??_C@_04LFBAIKMJ@mWd3?$AA@
  3113.   0017f    57         push     edi
  3114.   00180    ff 90 98 00 00
  3115.     00         call     DWORD PTR [eax+152]
  3116.  
  3117. ; 351  : 
  3118. ; 352  :             m_pDevice->GetTransform(D3DTS_WORLD3,&matWorld);
  3119.  
  3120.   00186    8b 06         mov     eax, DWORD PTR [esi]
  3121.   00188    8b 08         mov     ecx, DWORD PTR [eax]
  3122.   0018a    8d 55 90     lea     edx, DWORD PTR _matWorld$[ebp]
  3123.   0018d    52         push     edx
  3124.   0018e    68 03 01 00 00     push     259            ; 00000103H
  3125.   00193    50         push     eax
  3126.   00194    ff 91 b4 00 00
  3127.     00         call     DWORD PTR [ecx+180]
  3128.  
  3129. ; 353  :             pfxShowNormals->SetMatrix("mWd4", &matWorld);                       
  3130.  
  3131.   0019a    8b 07         mov     eax, DWORD PTR [edi]
  3132.   0019c    8d 4d 90     lea     ecx, DWORD PTR _matWorld$[ebp]
  3133.   0019f    51         push     ecx
  3134.   001a0    68 00 00 00 00     push     OFFSET FLAT:??_C@_04PKFBBMAO@mWd4?$AA@
  3135.   001a5    57         push     edi
  3136.   001a6    ff 90 98 00 00
  3137.     00         call     DWORD PTR [eax+152]
  3138.  
  3139. ; 354  : 
  3140. ; 355  :         }
  3141. ; 356  :         else
  3142.  
  3143.   001ac    e9 86 00 00 00     jmp     $L56413
  3144. $L56406:
  3145.  
  3146. ; 357  :         {
  3147. ; 358  :             dwFVF = INDEXSKINNEDFVF;
  3148. ; 359  :             pfxCurrent = pfxShowNormals;
  3149. ; 360  :             cBytesPerVertex = INDEXSKINNEDFVFSTRIDE;
  3150. ; 361  :             pfxShowNormals->SetTechnique(pfxShowNormals->GetTechnique(1));
  3151.  
  3152.   001b1    6a 01         push     1
  3153.   001b3    57         push     edi
  3154.   001b4    c7 45 14 1e 80
  3155.     00 00         mov     DWORD PTR _dwFVF$[ebp], 32798 ; 0000801eH
  3156.   001bb    c7 45 f8 2c 00
  3157.     00 00         mov     DWORD PTR _cBytesPerVertex$[ebp], 44 ; 0000002cH
  3158.   001c2    ff 53 30     call     DWORD PTR [ebx+48]
  3159.   001c5    50         push     eax
  3160.   001c6    57         push     edi
  3161.   001c7    ff 93 f0 00 00
  3162.     00         call     DWORD PTR [ebx+240]
  3163.  
  3164. ; 362  : 
  3165. ; 363  :             m_pDevice->GetTransform(D3DTS_VIEW,&matView);
  3166.  
  3167.   001cd    8b 06         mov     eax, DWORD PTR [esi]
  3168.   001cf    8b 08         mov     ecx, DWORD PTR [eax]
  3169.   001d1    8d 95 10 ff ff
  3170.     ff         lea     edx, DWORD PTR _matView$[ebp]
  3171.   001d7    52         push     edx
  3172.   001d8    6a 02         push     2
  3173.   001da    50         push     eax
  3174.   001db    ff 91 b4 00 00
  3175.     00         call     DWORD PTR [ecx+180]
  3176.  
  3177. ; 364  :             m_pDevice->GetTransform(D3DTS_PROJECTION,&matProj);
  3178.  
  3179.   001e1    8b 06         mov     eax, DWORD PTR [esi]
  3180.   001e3    8b 08         mov     ecx, DWORD PTR [eax]
  3181.   001e5    8d 95 50 ff ff
  3182.     ff         lea     edx, DWORD PTR _matProj$[ebp]
  3183.   001eb    52         push     edx
  3184.   001ec    6a 03         push     3
  3185.   001ee    50         push     eax
  3186.   001ef    ff 91 b4 00 00
  3187.     00         call     DWORD PTR [ecx+180]
  3188.  
  3189. ; 365  : 
  3190. ; 366  :             D3DXMatrixMultiply(&matTot,&matView,&matProj);
  3191.  
  3192.   001f5    8d 85 50 ff ff
  3193.     ff         lea     eax, DWORD PTR _matProj$[ebp]
  3194.   001fb    50         push     eax
  3195.   001fc    8d 85 10 ff ff
  3196.     ff         lea     eax, DWORD PTR _matView$[ebp]
  3197.   00202    50         push     eax
  3198.   00203    8d 85 d0 fe ff
  3199.     ff         lea     eax, DWORD PTR _matTot$[ebp]
  3200.   00209    50         push     eax
  3201.   0020a    e8 00 00 00 00     call     _D3DXMatrixMultiply@12
  3202.  
  3203. ; 367  :             pfxShowNormals->SetMatrix("mTot", &matTot);                       
  3204.  
  3205.   0020f    8b 07         mov     eax, DWORD PTR [edi]
  3206.   00211    8d 8d d0 fe ff
  3207.     ff         lea     ecx, DWORD PTR _matTot$[ebp]
  3208.   00217    51         push     ecx
  3209.   00218    68 00 00 00 00     push     OFFSET FLAT:??_C@_04BEMIBDAE@mTot?$AA@
  3210.   0021d    57         push     edi
  3211.   0021e    ff 90 98 00 00
  3212.     00         call     DWORD PTR [eax+152]
  3213.  
  3214. ; 368  : 
  3215. ; 369  :             pfxShowNormals->SetMatrixArray("mWorlds", rgmIndexedMatrices, 28);
  3216.  
  3217.   00224    8b 07         mov     eax, DWORD PTR [edi]
  3218.   00226    6a 1c         push     28            ; 0000001cH
  3219.   00228    ff 75 1c     push     DWORD PTR _rgmIndexedMatrices$[ebp]
  3220.   0022b    68 00 00 00 00     push     OFFSET FLAT:??_C@_07HHMNENJH@mWorlds?$AA@
  3221.   00230    57         push     edi
  3222.   00231    ff 90 a0 00 00
  3223.     00         call     DWORD PTR [eax+160]
  3224. $L56413:
  3225.  
  3226. ; 370  : 
  3227. ; 371  :             //for (iMatrix = 0; iMatrix < cIndexedMatrices; iMatrix++)
  3228. ; 372  :             //{
  3229. ; 373  :               //  pfxShowNormals->SetMatrix(x_rgszMatrix[iMatrix], &rgmIndexedMatrices[iMatrix]);
  3230. ; 374  :             //}
  3231. ; 375  :         }
  3232. ; 376  : 
  3233. ; 377  :         pfxShowNormals->SetVector("vScl", &vScale);                       
  3234.  
  3235.   00237    8b 07         mov     eax, DWORD PTR [edi]
  3236.   00239    8d 4d d0     lea     ecx, DWORD PTR _vScale$[ebp]
  3237.   0023c    51         push     ecx
  3238.   0023d    68 00 00 00 00     push     OFFSET FLAT:??_C@_04BFCOOMBD@vScl?$AA@
  3239.   00242    57         push     edi
  3240.   00243    ff 90 88 00 00
  3241.     00         call     DWORD PTR [eax+136]
  3242.  
  3243. ; 378  :         pfxShowNormals->SetVector("vClr", (D3DXVECTOR4*)&vClr);                       
  3244.  
  3245.   00249    8b 07         mov     eax, DWORD PTR [edi]
  3246.   0024b    8d 4d e0     lea     ecx, DWORD PTR _vClr$[ebp]
  3247.   0024e    51         push     ecx
  3248.   0024f    68 00 00 00 00     push     OFFSET FLAT:??_C@_04JKCKMDGO@vClr?$AA@
  3249.   00254    57         push     edi
  3250.   00255    ff 90 88 00 00
  3251.     00         call     DWORD PTR [eax+136]
  3252.  
  3253. ; 379  : 
  3254. ; 380  :         dwSoftwareMode = m_pDevice->GetSoftwareVertexProcessing();
  3255.  
  3256.   0025b    8b 06         mov     eax, DWORD PTR [esi]
  3257.   0025d    8b 08         mov     ecx, DWORD PTR [eax]
  3258.   0025f    50         push     eax
  3259.   00260    ff 91 38 01 00
  3260.     00         call     DWORD PTR [ecx+312]
  3261.  
  3262. ; 381  :         if (!m_bHWVertexShaders)
  3263.  
  3264.   00266    83 7e 14 00     cmp     DWORD PTR [esi+20], 0
  3265.   0026a    89 45 f0     mov     DWORD PTR _dwSoftwareMode$[ebp], eax
  3266.   0026d    75 14         jne     SHORT $L56418
  3267.  
  3268. ; 382  :         {
  3269. ; 383  :             bChangedSWMode = TRUE;
  3270. ; 384  :             m_pDevice->SetSoftwareVertexProcessing(TRUE);
  3271.  
  3272.   0026f    8b 06         mov     eax, DWORD PTR [esi]
  3273.   00271    8b 10         mov     edx, DWORD PTR [eax]
  3274.   00273    33 c9         xor     ecx, ecx
  3275.   00275    41         inc     ecx
  3276.   00276    51         push     ecx
  3277.   00277    50         push     eax
  3278.   00278    89 4d fc     mov     DWORD PTR _bChangedSWMode$[ebp], ecx
  3279.   0027b    ff 92 34 01 00
  3280.     00         call     DWORD PTR [edx+308]
  3281.  
  3282. ; 385  :         }
  3283. ; 386  :         // if in the wrong mode, then switch
  3284. ; 387  :         else if (dwSoftwareMode && m_bHWVertexShaders)
  3285.  
  3286.   00281    eb 40         jmp     SHORT $L56793
  3287. $L56418:
  3288.   00283    85 c0         test     eax, eax
  3289.   00285    74 3c         je     SHORT $L56793
  3290.  
  3291. ; 388  :         {
  3292. ; 389  :             bChangedSWMode = TRUE;
  3293. ; 390  :             m_pDevice->SetSoftwareVertexProcessing(FALSE);
  3294.  
  3295.   00287    8b 06         mov     eax, DWORD PTR [esi]
  3296.   00289    8b 08         mov     ecx, DWORD PTR [eax]
  3297.   0028b    6a 00         push     0
  3298.   0028d    50         push     eax
  3299.   0028e    c7 45 fc 01 00
  3300.     00 00         mov     DWORD PTR _bChangedSWMode$[ebp], 1
  3301.   00295    ff 91 34 01 00
  3302.     00         call     DWORD PTR [ecx+308]
  3303.  
  3304. ; 391  :         }
  3305. ; 392  :     }
  3306. ; 393  :     else
  3307.  
  3308.   0029b    eb 26         jmp     SHORT $L56793
  3309. $L56405:
  3310.  
  3311. ; 394  :     {
  3312. ; 395  :         pfxCurrent = pfxColor;
  3313.  
  3314.   0029d    8b 45 14     mov     eax, DWORD PTR _pfxColor$[ebp]
  3315.  
  3316. ; 396  :         dwFVF = D3DFVF_XYZ;
  3317. ; 397  :         cBytesPerVertex = 12;
  3318. ; 398  : 
  3319. ; 399  :         pfxCurrent->SetVector("vClr", (D3DXVECTOR4*)&vClr);                       
  3320.  
  3321.   002a0    8b 08         mov     ecx, DWORD PTR [eax]
  3322.   002a2    8d 55 e0     lea     edx, DWORD PTR _vClr$[ebp]
  3323.   002a5    52         push     edx
  3324.   002a6    68 00 00 00 00     push     OFFSET FLAT:??_C@_04JKCKMDGO@vClr?$AA@
  3325.   002ab    50         push     eax
  3326.   002ac    89 45 10     mov     DWORD PTR _pfxCurrent$[ebp], eax
  3327.   002af    c7 45 14 02 00
  3328.     00 00         mov     DWORD PTR _dwFVF$[ebp], 2
  3329.   002b6    c7 45 f8 0c 00
  3330.     00 00         mov     DWORD PTR _cBytesPerVertex$[ebp], 12 ; 0000000cH
  3331.   002bd    ff 91 88 00 00
  3332.     00         call     DWORD PTR [ecx+136]
  3333. $L56793:
  3334.  
  3335. ; 400  :     }
  3336. ; 401  : 
  3337. ; 402  :     if ((iAttrib < m_caeAttributeTable) && (m_rgaeAttributeTable[iAttrib].AttribId == iAttrib))
  3338.  
  3339.   002c3    8b 7e 20     mov     edi, DWORD PTR [esi+32]
  3340.   002c6    8b 4d 08     mov     ecx, DWORD PTR _iAttrib$[ebp]
  3341.   002c9    3b cf         cmp     ecx, edi
  3342.   002cb    73 0f         jae     SHORT $L56423
  3343.   002cd    8b 56 1c     mov     edx, DWORD PTR [esi+28]
  3344.   002d0    8d 04 89     lea     eax, DWORD PTR [ecx+ecx*4]
  3345.   002d3    39 0c 82     cmp     DWORD PTR [edx+eax*4], ecx
  3346.   002d6    75 04         jne     SHORT $L56423
  3347.  
  3348. ; 403  :     {
  3349. ; 404  :         iSubset = iAttrib;
  3350.  
  3351.   002d8    8b c1         mov     eax, ecx
  3352.  
  3353. ; 405  :     }
  3354. ; 406  :     else
  3355.  
  3356.   002da    eb 15         jmp     SHORT $L56788
  3357. $L56423:
  3358.  
  3359. ; 407  :     {
  3360. ; 408  :         // look for the correct attribute table entry to draw
  3361. ; 409  :         for (iSubset = 0; iSubset < m_caeAttributeTable; iSubset++)
  3362.  
  3363.   002dc    33 c0         xor     eax, eax
  3364.   002de    85 ff         test     edi, edi
  3365.   002e0    76 0f         jbe     SHORT $L56788
  3366.   002e2    8b 56 1c     mov     edx, DWORD PTR [esi+28]
  3367. $L56425:
  3368.  
  3369. ; 410  :         {
  3370. ; 411  :             if (m_rgaeAttributeTable[iSubset].AttribId == iAttrib)
  3371.  
  3372.   002e5    39 0a         cmp     DWORD PTR [edx], ecx
  3373.   002e7    74 08         je     SHORT $L56788
  3374.   002e9    40         inc     eax
  3375.   002ea    83 c2 14     add     edx, 20            ; 00000014H
  3376.   002ed    3b c7         cmp     eax, edi
  3377.   002ef    72 f4         jb     SHORT $L56425
  3378. $L56788:
  3379.  
  3380. ; 412  :             {
  3381. ; 413  :                 break;
  3382. ; 414  :             }
  3383. ; 415  :         }
  3384. ; 416  :     }
  3385. ; 417  : 
  3386. ; 418  :     if (iSubset < m_caeAttributeTable)
  3387.  
  3388.   002f1    3b c7         cmp     eax, edi
  3389.   002f3    0f 83 da 00 00
  3390.     00         jae     $L56796
  3391.  
  3392. ; 419  :     {
  3393. ; 420  :         if (m_rgaeAttributeTable[iSubset].VertexCount > 0)
  3394.  
  3395.   002f9    8d 1c 80     lea     ebx, DWORD PTR [eax+eax*4]
  3396.   002fc    8b 46 1c     mov     eax, DWORD PTR [esi+28]
  3397.   002ff    c1 e3 02     shl     ebx, 2
  3398.   00302    83 7c 03 10 00     cmp     DWORD PTR [ebx+eax+16], 0
  3399.   00307    0f 86 c6 00 00
  3400.     00         jbe     $L56796
  3401.  
  3402. ; 421  :         {
  3403. ; 422  :             pfxCurrent->Begin(&cPasses, 0);
  3404.  
  3405.   0030d    8b 7d 10     mov     edi, DWORD PTR _pfxCurrent$[ebp]
  3406.   00310    8b 07         mov     eax, DWORD PTR [edi]
  3407.   00312    6a 00         push     0
  3408.   00314    8d 4d f4     lea     ecx, DWORD PTR _cPasses$[ebp]
  3409.   00317    51         push     ecx
  3410.   00318    57         push     edi
  3411.   00319    ff 90 04 01 00
  3412.     00         call     DWORD PTR [eax+260]
  3413.  
  3414. ; 423  : 
  3415. ; 424  :             for (iPass = 0; iPass < cPasses; iPass++)
  3416.  
  3417.   0031f    83 65 18 00     and     DWORD PTR _iPass$[ebp], 0
  3418.   00323    83 7d f4 00     cmp     DWORD PTR _cPasses$[ebp], 0
  3419.   00327    0f 86 9d 00 00
  3420.     00         jbe     $L56433
  3421. $L56431:
  3422.  
  3423. ; 425  :             {
  3424. ; 426  :                 m_pDevice->SetFVF(dwFVF);
  3425.  
  3426.   0032d    8b 06         mov     eax, DWORD PTR [esi]
  3427.   0032f    ff 75 14     push     DWORD PTR _dwFVF$[ebp]
  3428.   00332    8b 08         mov     ecx, DWORD PTR [eax]
  3429.   00334    50         push     eax
  3430.   00335    ff 91 64 01 00
  3431.     00         call     DWORD PTR [ecx+356]
  3432.  
  3433. ; 427  : 
  3434. ; 428  :                 pfxCurrent->BeginPass(iPass);
  3435.  
  3436.   0033b    ff 75 18     push     DWORD PTR _iPass$[ebp]
  3437.   0033e    8b 07         mov     eax, DWORD PTR [edi]
  3438.   00340    57         push     edi
  3439.   00341    ff 90 08 01 00
  3440.     00         call     DWORD PTR [eax+264]
  3441.  
  3442. ; 429  : 
  3443. ; 430  :                 m_pDevice->SetStreamSource(0, m_pVertexBuffer, 0, cBytesPerVertex);
  3444.  
  3445.   00347    ff 75 f8     push     DWORD PTR _cBytesPerVertex$[ebp]
  3446.   0034a    8b 06         mov     eax, DWORD PTR [esi]
  3447.   0034c    8b 08         mov     ecx, DWORD PTR [eax]
  3448.   0034e    6a 00         push     0
  3449.   00350    ff 76 04     push     DWORD PTR [esi+4]
  3450.   00353    6a 00         push     0
  3451.   00355    50         push     eax
  3452.   00356    ff 91 90 01 00
  3453.     00         call     DWORD PTR [ecx+400]
  3454.  
  3455. ; 431  : 
  3456. ; 432  :                 if (iVertex == UNUSED32)
  3457.  
  3458.   0035c    8b 4d 0c     mov     ecx, DWORD PTR _iVertex$[ebp]
  3459.   0035f    83 f9 ff     cmp     ecx, -1
  3460.   00362    0f 85 88 00 00
  3461.     00         jne     $L56434
  3462.  
  3463. ; 433  :                 {
  3464. ; 434  :                     iVertexStart = m_rgaeAttributeTable[iSubset].VertexStart;
  3465.  
  3466.   00368    8b 46 1c     mov     eax, DWORD PTR [esi+28]
  3467.   0036b    03 c3         add     eax, ebx
  3468.   0036d    8b 78 0c     mov     edi, DWORD PTR [eax+12]
  3469.  
  3470. ; 435  :                     cLines = m_rgaeAttributeTable[iSubset].VertexCount;
  3471.  
  3472.   00370    8b 40 10     mov     eax, DWORD PTR [eax+16]
  3473.  
  3474. ; 436  : 
  3475. ; 437  :                     while (cLines > 0)
  3476.  
  3477.   00373    85 c0         test     eax, eax
  3478.   00375    89 45 08     mov     DWORD PTR _cLines$[ebp], eax
  3479.   00378    76 35         jbe     SHORT $L56795
  3480. $L56436:
  3481.  
  3482. ; 438  :                     {
  3483. ; 439  :                         cLinesCur = min(cLines, (0xffff / 2));
  3484.  
  3485.   0037a    8b 4d 08     mov     ecx, DWORD PTR _cLines$[ebp]
  3486.   0037d    b8 ff 7f 00 00     mov     eax, 32767        ; 00007fffH
  3487.   00382    3b c8         cmp     ecx, eax
  3488.   00384    89 4d 1c     mov     DWORD PTR _cLinesCur$[ebp], ecx
  3489.   00387    72 03         jb     SHORT $L56764
  3490.   00389    89 45 1c     mov     DWORD PTR _cLinesCur$[ebp], eax
  3491. $L56764:
  3492.  
  3493. ; 440  : 
  3494. ; 441  :                         hr = m_pDevice->DrawPrimitive(D3DPT_LINELIST, 
  3495. ; 442  :                                                      iVertexStart * 2, 
  3496. ; 443  :                                                      cLinesCur);
  3497.  
  3498.   0038c    ff 75 1c     push     DWORD PTR _cLinesCur$[ebp]
  3499.   0038f    8b 06         mov     eax, DWORD PTR [esi]
  3500.   00391    8b 08         mov     ecx, DWORD PTR [eax]
  3501.   00393    8d 14 3f     lea     edx, DWORD PTR [edi+edi]
  3502.   00396    52         push     edx
  3503.   00397    6a 02         push     2
  3504.   00399    50         push     eax
  3505.   0039a    ff 91 44 01 00
  3506.     00         call     DWORD PTR [ecx+324]
  3507.  
  3508. ; 444  :                         if (FAILED(hr))
  3509.  
  3510.   003a0    85 c0         test     eax, eax
  3511.   003a2    7c 45         jl     SHORT $L56385
  3512.  
  3513. ; 445  :                             return hr;
  3514. ; 446  : 
  3515. ; 447  :                         iVertexStart += cLinesCur * 2;
  3516.  
  3517.   003a4    8b 45 1c     mov     eax, DWORD PTR _cLinesCur$[ebp]
  3518.  
  3519. ; 448  :                         cLines -= cLinesCur;
  3520.  
  3521.   003a7    29 45 08     sub     DWORD PTR _cLines$[ebp], eax
  3522.   003aa    8d 3c 47     lea     edi, DWORD PTR [edi+eax*2]
  3523.   003ad    75 cb         jne     SHORT $L56436
  3524. $L56795:
  3525.  
  3526. ; 449  :                     }
  3527. ; 450  :                 }
  3528. ; 451  :                 else
  3529.  
  3530.   003af    8b 7d 10     mov     edi, DWORD PTR _pfxCurrent$[ebp]
  3531. $L56440:
  3532.  
  3533. ; 455  :                 }
  3534. ; 456  : 
  3535. ; 457  :                 pfxCurrent->EndPass();
  3536.  
  3537.   003b2    8b 07         mov     eax, DWORD PTR [edi]
  3538.   003b4    57         push     edi
  3539.   003b5    ff 90 10 01 00
  3540.     00         call     DWORD PTR [eax+272]
  3541.   003bb    ff 45 18     inc     DWORD PTR _iPass$[ebp]
  3542.   003be    8b 45 18     mov     eax, DWORD PTR _iPass$[ebp]
  3543.   003c1    3b 45 f4     cmp     eax, DWORD PTR _cPasses$[ebp]
  3544.   003c4    0f 82 63 ff ff
  3545.     ff         jb     $L56431
  3546. $L56433:
  3547.  
  3548. ; 458  :             }
  3549. ; 459  : 
  3550. ; 460  :             pfxCurrent->End();
  3551.  
  3552.   003ca    8b 07         mov     eax, DWORD PTR [edi]
  3553.   003cc    57         push     edi
  3554.   003cd    ff 90 14 01 00
  3555.     00         call     DWORD PTR [eax+276]
  3556. $L56796:
  3557.  
  3558. ; 461  : 
  3559. ; 462  :         }
  3560. ; 463  :     }
  3561. ; 464  : 
  3562. ; 465  :     if (bChangedSWMode)
  3563.  
  3564.   003d3    83 7d fc 00     cmp     DWORD PTR _bChangedSWMode$[ebp], 0
  3565.   003d7    74 0e         je     SHORT $L56441
  3566.  
  3567. ; 466  :     {
  3568. ; 467  :         m_pDevice->SetSoftwareVertexProcessing(dwSoftwareMode);
  3569.  
  3570.   003d9    8b 36         mov     esi, DWORD PTR [esi]
  3571.   003db    ff 75 f0     push     DWORD PTR _dwSoftwareMode$[ebp]
  3572.   003de    8b 06         mov     eax, DWORD PTR [esi]
  3573.   003e0    56         push     esi
  3574.   003e1    ff 90 34 01 00
  3575.     00         call     DWORD PTR [eax+308]
  3576. $L56441:
  3577.  
  3578. ; 468  :     }
  3579. ; 469  : 
  3580. ; 470  :     return S_OK;
  3581.  
  3582.   003e7    33 c0         xor     eax, eax
  3583. $L56385:
  3584.   003e9    5f         pop     edi
  3585.   003ea    5e         pop     esi
  3586.   003eb    5b         pop     ebx
  3587.  
  3588. ; 471  : }
  3589.  
  3590.   003ec    c9         leave
  3591.   003ed    c2 1c 00     ret     28            ; 0000001cH
  3592. $L56434:
  3593.  
  3594. ; 452  :                 {
  3595. ; 453  :                     hr = m_pDevice->DrawPrimitive(D3DPT_LINELIST, 
  3596. ; 454  :                                                  iVertex * 2, 1);
  3597.  
  3598.   003f0    8b 06         mov     eax, DWORD PTR [esi]
  3599.   003f2    8b 10         mov     edx, DWORD PTR [eax]
  3600.   003f4    6a 01         push     1
  3601.   003f6    03 c9         add     ecx, ecx
  3602.   003f8    51         push     ecx
  3603.   003f9    6a 02         push     2
  3604.   003fb    50         push     eax
  3605.   003fc    ff 92 44 01 00
  3606.     00         call     DWORD PTR [edx+324]
  3607.   00402    eb ae         jmp     SHORT $L56440
  3608. ?Draw@CShowNormals@@QAEJKKPAUID3DXEffect@@0KPAUD3DXMATRIX@@K@Z ENDP ; CShowNormals::Draw
  3609. _TEXT    ENDS
  3610. END
  3611.